标点符号标记Java中的许可字符串比较

时间:2012-10-28 14:36:13

标签: java android string

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

一些例子:

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

(没有必要涵盖所有选项)

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

1 个答案:

答案 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("");
}