“(?i)" funktioniert nicht mit Akzenten
-
12-12-2019 - |
Frage
Ich habe eine Java-Methode, die nach einem Wort in einer Phrase sucht und dabei die Groß- und Kleinschreibung des Wortes ignoriert.Das Wort und der Satz können alles sein.Sie sind variant.Hier ist mein Code :
private String removeWord( String phrase, String word ) {
phrase = phrase.replaceAll( "(?i)" + word , "" );
return phrase;
}
Die Dinge funktionieren perfekt, es sei denn, das Wort hat einen Akzent.Zum Beispiel, wenn das Wort "álvarez" und der Satz ist "Álvarez-Satz", dann funktioniert es nicht als "(?i) " funktioniert in diesem Fall nicht.
Gibt es eine Möglichkeit zu machen "(?i)" mit Akzentzeichen arbeiten ?
Lösung
Ersetzen Sie einfach (? i) mit (? iu) - es schaltet ein Unicode-Gehäuse-unempfindliche Anpassung an
Andere Tipps
Standardmäßig (?i)
funktioniert nur mit ASCII-Zeichen - siehe Muster.FALL_UNEMPFINDLICH Einzelheiten.Sie könnten dieses Flag wie UNICODE_CASE mit UNICODE_CASE kombinieren:
phrase = Pattern.compile(word, UNICODE_CASE | CASE_INSENSITIVE).matcher(phrase).replaceAll("");