Подтвердить что ты не робот

Преобразование строки Java в ascii

Мне нужно преобразовать String, который состоит из некоторых букв, специфичных для определенных языков (например, HÄSTDJUR - примечание Ä), до String без этих специальных букв (в данном случае HASTDJUR). Как я могу сделать это на Java? Спасибо за помощь!


На самом деле это не так. Следующий сценарий - вы хотите использовать приложение, но не имеете шведской клавиатуры. Поэтому вместо того, чтобы смотреть на карту символов, вы вводите ее, заменяя специальные буквы типичными буквами латинского алфавита.

4b9b3361

Ответ 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.