【问题标题】:Punctuation marks permissive string comparison in JavaJava中的标点符号允许字符串比较
【发布时间】:2012-10-18 01:33:41
【问题描述】:

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

一些例子:

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

(不必涵盖所有选项)

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

【问题讨论】:

    标签: java android string


    【解决方案1】:

    删除所有特殊字符。

    就像从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("");
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-15
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-11
      相关资源
      最近更新 更多