我想比较(不区分大小写)两个字符串,忽略标点符号,如点,逗号或其他符号(如西班牙语或法语字母ó ü ê
等)
一些例子:
Hello == Helló
Hello, Sam == Hello sam
geo-code == geocode == geo code
(没有必要涵盖所有选项)
什么是最好的解决方案(外部库,方法等)
答案 0 :(得分:5)
删除所有特殊字符。
与geo-code
移除-
一样,它变为geocode
。同样,从geo code
Hello, sam
和逗号变为Hellosam
,然后您可以比较这些字符串。 Here's how you can do that.
现在关于像法国人这样的特殊字符:This will help you.
这里是code found in another thread。我还没有测试过。
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("");
}