Вопрос

У меня есть метод Java, который ищет слово внутри фразы, игнорируя чувствительность случая слова, и если он находит слово, то он удаляет его из фразы.Слово и фраза могут быть чем угодно.Они вариант.Вот мой код:

private String removeWord( String phrase, String word ) {
    phrase = phrase.replaceAll( "(?i)" + word , "" );
    return phrase;
}
.

Все работает идеально, если не у меня нет акцента.Например, если слово « álvarez », а фраза " álvarez фраза ", то она не будет работать как "(? I)" не работает в этомкорпус.

Есть ли способ сделать "(? i)" работать с акцентированными персонажами?

Это было полезно?

Решение

Просто замените (? I) с (? IU) - он включится в нечувствительном регистре Unicode, сопоставившись

Другие советы

По умолчанию (?i) работает только с символами ASCII - см. Pattern.Case_inssSensitive для деталей.Вы можете объединить этот флаг с Unicode_Case вместе, как так:

phrase = Pattern.compile(word, UNICODE_CASE | CASE_INSENSITIVE).matcher(phrase).replaceAll("");
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top