Преобразование строки Java в ascii
Мне нужно конвертировать String
s, состоящий из нескольких букв, характерных для определенных языков (например, HÄSTDJUR - note Ä) String
без этих специальных букв (в данном случае HASTDJUR). Как я могу сделать это на Java? Спасибо за помощь!
Это не совсем о том, как это звучит. Сценарий следующий - вы хотите использовать приложение, но у вас нет шведской клавиатуры. Поэтому вместо того, чтобы смотреть на карту символов, вы набираете ее, заменяя специальные буквы типичными буквами латинского алфавита.
2 ответа
Я думаю, что ваш вопрос такой же, как этот:
Java - избавление от акцентов и преобразование их в обычные буквы
и, следовательно, ответ также тот же:
Решение
String convertedString =
Normalizer
.normalize(input, Normalizer.Form.NFD)
.replaceAll("[^\\p{ASCII}]", "");
Рекомендации
Увидеть
- JavaDoc: Normalizer.normalize (String, Normalizer.Form)
- JavaDoc: Normalizer.Form.NFD
- Sun Java Tutorial: API нормализатора
Пример кода:
final String input = "Tĥïŝ ĩš â fůňķŷ Šťŕĭńġ";
System.out.println(
Normalizer
.normalize(input, Normalizer.Form.NFD)
.replaceAll("[^\\p{ASCII}]", "")
);
Выход:
Это в стиле фанк
Я бы предложил сопоставление специальных символов с теми, которые вы хотите.
Ä --> A
é --> e
A --> A (exactly the same)
etc...
И тогда вы можете просто вызвать ваше отображение над текстом (в псевдокоде):
for letter in string:
newString += map(letter)
По сути, вам нужно создать набор правил для того, какие символы отображаются в эквиваленте ASCII.