Czy istnieje sposób na pozbycie się akcentów i zamianę całego ciągu na zwykłe litery?

Czy istnieje lepszy sposób na pozbycie się akcentów i przekształcenie tych liter na normalne oprócz używania metody String.replaceAll () i zastępowania liter jedna po drugiej? Przykład:

Dane wejściowe: orčpžsíáýd

Wyjście: orcpzsiayd

Nie musi zawierać wszystkich liter z akcentami, takimi jak alfabet rosyjski lub chiński.

1 odpowiedź

Użyj java.text.Normalizer, aby sobie z tym poradzić.

string = Normalizer.normalize(string, Normalizer.Form.NFD);
// lub Normalizer.Form.NFKD, aby uzyskać bardziej „kompatybilną” dekonstrukcję

To oddzieli wszystkie znaki akcentu od znaków. Następnie wystarczy porównać każdą postać z literą:

string = string.replaceAll("[^\\p{ASCII}]", "");

Jeśli twój tekst jest w standardzie Unicode, powinieneś użyć tego:

string = string.replaceAll("\\p{M}", "");

W przypadku Unicode \\ P {M} dopasowuje glif podstawowy, a \\ p {M} (małe litery) dopasowuje każdy akcent.

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.