2

我想比较(不区分大小写)两个字符串,忽略标点符号,如点、逗号或其他符号(如西班牙语或法语字母ó ü ê等)

一些例子:

  Hello == Helló
  Hello, Sam == Hello sam
  geo-code   == geocode == geo code

(不必涵盖所有选项)

什么是最好的解决方案(外部库、方法等)

4

1 回答 1

5

删除所有特殊字符。

就像从geo-code删除-它变成geocode. 同样,从geo code

Hello, sam删除空格和逗号Hellosam后,您可以比较这些字符串。这是你可以做到的。

现在关于像法语这样的特殊字符:这将对您有所帮助。

这是在另一个线程中找到的代码。我还没有测试过。

import java.text.Normalizer;
import java.util.regex.Pattern;

public String deAccent(String str) {
    String nfdNormalizedString = Normalizer.normalize(str, Normalizer.Form.NFD); 
    Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
    return pattern.matcher(nfdNormalizedString).replaceAll("");
}
于 2012-10-28T14:40:01.810 回答