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 è " Álvarez " e la frase è " Álvarez frase ", allora non funzionerà come "(? I)" non riesce a lavorare in questoCaso.

C'è un modo per fare "(? I)" lavorare con caratteri accentati?

È stato utile?

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("");
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top