2016-03-19 9 views
2

Ich habe den folgenden Beispielcode:einen String außer ñ

String n = "Péña"; 
n = Normalizer.normalize(n, Normalizer.Form.NFC); 

Wie normalisieren wir die Zeichenfolge n mit Ausnahme der ñ?

Und nicht nur diese Zeichenfolge, ich mache ein Formular, und ich möchte nur die ñ's, und alles andere ohne diakritische Zeichen.

+0

Einfach 'normalisieren' und dann die normale' n ~ 'nach' ñ' zurückstellen. – usr2564301

Antwort

2

Ersetzen Sie alle Vorkommen von "ñ" durch ein nicht druckbares Zeichen "\ 001", so dass "Péña" zu "Pé \ 001a" wird. Rufen Sie dann Normalizer.normalize() an, um das "é" in "e" und ein separates diakritisches Zeichen zu zerlegen. Entfernen Sie schließlich die diakritischen Zeichen und konvertieren Sie das nicht druckbare Zeichen zurück in "ñ".

String partiallyNormalize(String string) 
{ 
    string = string.replace('ñ', '\001'); 
    string = Normalizer.normalize(string, Normalizer.Form.NFD); 
    string = string.replaceAll("[\\p{InCombiningDiacriticalMarks}]", ""); 
    string = string.replace('\001', 'ñ'); 
    return string; 
} 

Vielleicht wollen Sie auch die bevorzugte Antwort auf Easy way to remove UTF-8 accents from a string? upvote, wo ich gelernt, wie man die diakritischen Zeichen zu entfernen.

+0

Danke, das hat geholfen. – Gerardo