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