Java регулярное выражение для NonAsciiCharacters - PullRequest
0 голосов
/ 10 января 2019

Я использую этот маленький фрагмент.

string.replaceAll("[^\\p{ASCII}]","")

Я хочу удалить или удалить nonAsciiCharacters, но у меня есть проблема, например, следующая строка получает рип

final String myString = "cada dia es más cercano a Dios.";

но á удаляется, и это 225 символ Ascii. Я думал, что это регулярное выражение заменит все NON-ASCII, но это символ ascii, почему это так?

Может быть, я все неправильно понял.

1 Ответ

0 голосов
/ 10 января 2019

á (a-острый) не является частью набора символов ASCII. Это символ Unicode 'LATIN SMALL LETTER A WITH ACUTE' (U + 00E1) и часть дополнительного блока Latin-1 UTF-8.

Вы можете увидеть это, запустив:

"á".codePoints()
   .mapToObj(Integer::toHexString)
   .forEach(System.out::println); // e1

Чтобы сохранить á, вы можете либо специально занести этот символ в белый список в шаблоне

string.replaceAll("[^\\p{ASCII}á]", "")

или белый список большей группы, например p{L} который содержит все буквы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...