"(? I)" не работает с акцентами
-
12-12-2019 - |
Вопрос
У меня есть метод Java, который ищет слово внутри фразы, игнорируя чувствительность случая слова, и если он находит слово, то он удаляет его из фразы.Слово и фраза могут быть чем угодно.Они вариант.Вот мой код:
private String removeWord( String phrase, String word ) {
phrase = phrase.replaceAll( "(?i)" + word , "" );
return phrase;
}
.
Все работает идеально, если не у меня нет акцента.Например, если слово « álvarez », а фраза " álvarez фраза ", то она не будет работать как "(? I)" не работает в этомкорпус.
Есть ли способ сделать "(? i)" работать с акцентированными персонажами?
Решение
Просто замените (? I) с (? IU) - он включится в нечувствительном регистре Unicode, сопоставившись
Другие советы
По умолчанию (?i)
работает только с символами ASCII - см.
.phrase = Pattern.compile(word, UNICODE_CASE | CASE_INSENSITIVE).matcher(phrase).replaceAll("");