Преобразование специальных букв в буквы ascii в java

Я пытаюсь преобразовать строку со специальными буквами (такими как ä,à,è,ç,î,ñ.ö и т. д.) в буквы ascii. Мой пример:

String newName = oldName.replaceAll("\\s","").replaceAll("[^a-zA-Z0-9]", "");

Это прекрасно работает, за исключением того, что все специальные буквы исчезают... Есть ли простой способ "преобразовать" эти буквы в формат ascii?

Например, «Франсуа Мюде» станет «francoismuede». Как мне это реализовать?


person muffin    schedule 05.06.2013    source источник
comment
Вы можете попробовать использовать java.text.Normalizer.normalize(). Эта функция предлагает услуги по нормализации строк для Unicode. См. этот вопрос: stackoverflow.com /вопросы/1008802/   -  person Alberto Spelta    schedule 05.06.2013


Ответы (1)


Вообще говоря, ASCII — это очень плохая и старая таблица символов, и на самом деле она не содержит нужных символов.

Но как насчет вашей проблемы, она не связана с таблицей ASCII. Java работает с unicode. Вам просто нужно включить такие символы в ваше регулярное выражение, что-то вроде [^a-zA-Z0-9äàèçîñö].

Основная проблема заключается в том, что такие обычные конструкции, как a-z или A-Z (называемые symbol classes), не включают такие специальные национальные символы. Вы должны включить их вручную.

person Andremoniy    schedule 05.06.2013