我有一个Java方法,在一个短语中查找单词,忽略单词的区分大小写,如果找到单词,则将其从短语中删除。这个词和短语可以是任何东西。他们是变种。这是我的代码:
private String removeWord( String phrase, String word ) {
phrase = phrase.replaceAll( "(?i)" + word , "" );
return phrase;
}
事情很完美,除非这个词有重音。例如,如果单词是“álvarez”并且短语是“Álvarez短语”,那么它将无法正常工作,因为“(?i)”无法正常工作情况下。
有没有办法让“(?i)”与重音字符一起使用?
答案 0 :(得分:25)
用(?iu)替换(?i) - 它将打开unicode不区分大小写的匹配
答案 1 :(得分:4)
默认情况下(?i)
仅适用于ASCII字符 - 有关详细信息,请参阅Pattern.CASE_INSENSITIVE。您可以将该标志与UNICODE_CASE组合在一起,如下所示:
phrase = Pattern.compile(word, UNICODE_CASE | CASE_INSENSITIVE).matcher(phrase).replaceAll("");