"(? I)" Non funziona con gli accenti
-
12-12-2019 - |
Domanda
Ho un metodo Java che cerca una parola all'interno di una frase ignorando la sensibilità del caso della parola, e se trova la parola, quindi rimuove dalla frase.La parola e la frase possono essere qualsiasi cosa.Sono varianti.Ecco il mio codice:
private String removeWord( String phrase, String word ) {
phrase = phrase.replaceAll( "(?i)" + word , "" );
return phrase;
}
.
Le cose funzionano perfette, a meno che la parola non abbia un accento.Ad esempio se la parola è "
C'è un modo per fare "(? I)" lavorare con caratteri accentati?
Soluzione
Basta sostituire (? I) con (? IU) - Accenderà la corrispondenza insensibile del caso Unicode
Altri suggerimenti
Per impostazione predefinita (?i)
funziona solo con caratteri ASCII - Vedi Pattern.case_insensitive per i dettagli.Potresti combinare quel flag con Unicode_case insieme come:
phrase = Pattern.compile(word, UNICODE_CASE | CASE_INSENSITIVE).matcher(phrase).replaceAll("");
.