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 ?

War es hilfreich?

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("");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top