Национальные символы в java replaceAll

У меня большая проблема с заменой некоторых символов в Java. Я хотел бы удалить все символы, которые не являются буквами, цифрами или специальными национальными символами, такими как «ę, ą». Когда я использую функцию, replaceAll("\W", " ") специальные символы также удаляются.

Пример строки: «Jest źle, ale będzie lepiej».

Чем заменить: "Jest le ale b dzie lepiej"

Как это должно быть: "Jest źle ale będzie lepiej"

Извините за мой не очень хороший английский :)


person elberth    schedule 25.05.2014    source источник


Ответы (1)


Ваш английский лучше, чем польский Java. Регулярное выражение Java не говорит по-польски, поэтому оно рассматривает только a..z "национальные символы" (плюс цифры и знак подчеркивания - GREP, очевидно, был разработан программистами). На самом деле это справедливо: «нормальный» символ для одного языка является «странным» для другого.

Вы можете суммировать несколько дополнительных символов, отличных от ASCII, в пользовательском классе символов с отрицанием:

replace ("[^\wźę ]", " ");

(вы также должны добавить другие символы с диакритическими знаками и, возможно, удалить непольские символы, такие как Q и ​​X).

person Jongware    schedule 25.05.2014