【发布时间】:2012-10-18 01:33:41
【问题描述】:
我想比较(不区分大小写)两个字符串,忽略标点符号,如点、逗号或其他符号(如西班牙语或法语字母 ó ü ê 等)
一些例子:
Hello == Helló
Hello, Sam == Hello sam
geo-code == geocode == geo code
(不必涵盖所有选项)
什么是最好的解决方案(外部库、方法等)
【问题讨论】:
我想比较(不区分大小写)两个字符串,忽略标点符号,如点、逗号或其他符号(如西班牙语或法语字母 ó ü ê 等)
一些例子:
Hello == Helló
Hello, Sam == Hello sam
geo-code == geocode == geo code
(不必涵盖所有选项)
什么是最好的解决方案(外部库、方法等)
【问题讨论】:
删除所有特殊字符。
就像从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("");
}
【讨论】: