Konwersja Java String do ascii

Muszę przekonwertować String S, który składa się z niektórych liter specyficznych dla niektórych języków (jak HÄSTDJUR - note Ä) na String bez tych specjalnych liter (w tym przypadku HASTDJUR). Jak mogę to zrobić w Javie? Dzięki za pomoc!


Nie chodzi o to, jak to brzmi. Scenariusz jest następujący - chcesz korzystać z aplikacji, ale nie masz szwedzkiej klawiatury. Więc zamiast patrzeć na mapę postaci, wpisujesz ją, zastępując specjalne litery typowymi literami z alfabet łaciński.
 19
Author: Sean Patrick Floyd, 2010-09-14

2 answers

Myślę, że twoje pytanie jest takie samo jak to:

Java-pozbycie się akcentów i konwersja ich na zwykłe litery

I stąd też odpowiedź jest taka sama:

Rozwiązanie

String convertedString = 
       Normalizer
           .normalize(input, Normalizer.Form.NFD)
           .replaceAll("[^\\p{ASCII}]", "");

Referencje

Zobacz

Przykład Kod:

final String input = "Tĥïŝ ĩš â fůňķŷ Šťŕĭńġ";
System.out.println(
    Normalizer
        .normalize(input, Normalizer.Form.NFD)
        .replaceAll("[^\\p{ASCII}]", "")
);

Wyjście:

This is a funky String

 46
Author: Sean Patrick Floyd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-22 20:49:07

Sugerowałbym odwzorowanie znaków specjalnych na te, które chcesz.

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

I wtedy możesz po prostu wywołać mapowanie nad tekstem (w pseudokodzie):

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

Efektywnie, musisz stworzyć zestaw reguł dla tego, jakie znaki mapują do odpowiednika ASCII.

 2
Author: Noel M,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-14 10:26:49