Matcher.replaceAll () и String.replaceAll (), похоже, не работают на Galaxy S 6

Мне нужно удалить некоторые символы из строки. В настоящее время я пытаюсь удалить '' (пробел) и '-' (дефис). Я пробовал два пути. Оба они работают на Nexus 5X с Android N Beta. Ни один из них не работает на Samsung Galaxy S 6 с Android M.

Первый подход:

String normalizedNumber = phoneNumber.replaceAll("[ -]", ""); 

Второй подход:

 Pattern pattern = Pattern.compile("[ -]"); String normalizedNumber = pattern.matcher(phoneNumber).replaceAll(""); 

Как могут такие базовые классы давать разные результаты? Что я делаю не так?

Доказательство (скриншоты отладчика, снятые на разных ПК, вот почему они отличаются друг от друга):

Вот Nexus

нексус Вот Samsung

Samsung

Не могли бы вы попытаться с Подходом 1 с приведенной ниже модификацией:

 String normalizedNumber = phoneNumber.replace(" ","").replace("-",""); 

Надеюсь, что это должно работать в любой среде, поскольку это прямой подход замены символов, где, поскольку replaceAll всегда является скомпилированным подходом к шаблону для сопоставления символов

Мистери решила. При использовании String.charAt() для анализа строки получается, что в конце концов пробелы не были простыми пространствами, а « не разбивающимися пробелами » (код 160). Изменение кода для удаления всех пробелов исправлено:

 String normalizedNumber = phoneNumber.replaceAll("[\\s-]", ""); 

Код показывал разные результаты на разных телефонах, потому что цифры поступали из набора контактов Intent. Кажется, телефоны Samgung хранят пробелы в номерах, отличных от телефонов Nexus.

Спасибо всем за вашу помощь.

https://en.wikipedia.org/wiki/Non-breaking_space