12

我有一个 Java 方法,它在忽略单词的大小写敏感性的情况下在短语中查找单词,如果找到该单词,则将其从短语中删除。单词和短语可以是任何东西。它们是变体。这是我的代码:

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

一切都很完美,除非这个词有口音。例如,如果单词是“ álvarez ”,而短语是“ Álvarez phrase ”,那么它不会起作用,因为“(?i)”在这种情况下不起作用。

有没有办法让“(?i)”与重音字符一起工作?

4

2 回答 2

26

只需将 (?i) 替换为 (?iu) - 它会打开 unicode 不区分大小写的匹配

于 2012-10-02T11:24:41.893 回答
4

默认情况下(?i)仅适用于 ASCII 字符 - 有关详细信息,请参阅Pattern.CASE_INSENSITIVE。您可以将该标志与 UNICODE_CASE 组合在一起,如下所示:

phrase = Pattern.compile(word, UNICODE_CASE | CASE_INSENSITIVE).matcher(phrase).replaceAll("");
于 2012-10-02T11:21:34.750 回答