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

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


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

2 ответа

Решение

Я думаю, что ваш вопрос такой же, как этот:

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}]", "")
);

Выход:

Это в стиле фанк

Я бы предложил сопоставление специальных символов с теми, которые вы хотите.

Ä --> A
é --> e
A --> A (exactly the same)
etc...

И тогда вы можете просто вызвать ваше отображение над текстом (в псевдокоде):

for letter in string:
   newString += map(letter)

По сути, вам нужно создать набор правил для того, какие символы отображаются в эквиваленте ASCII.

Другие вопросы по тегам