【问题标题】:What is the alternative for String.contains method that is case insensitive? [duplicate]不区分大小写的 String.contains 方法的替代方法是什么? [复制]
【发布时间】:2017-02-01 06:33:46
【问题描述】:

在从文件中将行作为字符串读取时,string.contains("someexamplestring") 将返回区分大小写的字符串的输出。

如果行中有“someExampleString”,则不会返回。

如何以不区分大小写的方式识别字符串?

【问题讨论】:

  • 使用不区分大小写的正则表达式,例如string.matches("(?i).*someexamplestring.*")
  • 关于所有建议 toLowerCase/toUpperCase 的答案 - 如果您超出 ASCII 空间,请小心。在某些语言中,从低到高再到后(或其他方式)不一致。想到土耳其语的“我”en.wikipedia.org/wiki/Dotted_and_dotless_I

标签: java string contains readline case-sensitive


【解决方案1】:

其实这是How to check if a String contains another String in a case insensitive manner in Java?的复制品


如果你有更简单的要求并且只处理英文字母,你可以按照下面的答案。

你应该做string.toLowerCase().contains("someExampleString".toLowerCase());

从 Java SE 文档了解更多关于 public String toLowerCase() 的信息。

另外,正如Artur Biesiadowski 在问题的评论部分中所暗示的,在此重申:

关于所有建议 toLowerCase/toUpperCase 的答案 - 如果您超出 ASCII 空间,请小心。有一些语言 从上到下(或其他方式)不是 持续的。我想到了带有无点“i”的土耳其语:Dotted and dotless I


另外,为了更安全,您可以使用另一种方法 toLowerCase(Locale.English) 并始终将语言环境覆盖为英语。但是,限制是您不再国际化。

string.toLowerCase(Locale.English).contains("someExampleString".toLowerCase(Locale.English));

【讨论】:

  • 感谢@Am_I_Helpful
【解决方案2】:

你可以使用正则表达式:

str.matches("(?i).*someexamplestring.*")

【讨论】:

    【解决方案3】:

    首先在您的输入字符串上使用String.toLowerCase(str) 方法,然后应用String.contains(str) 方法。

    【讨论】:

      【解决方案4】:

      为了实现不区分大小写的操作,我们需要将两种字符串都设为大写或小写的一种格式。toLowerCase'toUpperCase'methods 在您想要执行包含操作时会很有帮助

      toLowerCase 有两种变体。

      somestring.toLowerCase();
      somestring.toLowerCase(Locale somelocale)
      

      例子

      String case1 = "StackOverFlow";
      String case2 = "STACKOverfloW";
      bool isSame ;
      isSame = case1.toLowerCase().Contains(case2.toLowerCase());
      

      请注意,equalsIgnoreCase() 在您想要比较两个字符串时会很有帮助

      【讨论】:

      • 请在 downvote 之前添加您有用的命令,以便我知道正确答案。对学习很有帮助
      【解决方案5】:

      你可以toLowerCase()你的字符串,然后用你想要匹配的小写版本的contains

      【讨论】:

        【解决方案6】:

        您应该将两个字符串都转换为小写或大写。然后进行操作。

            Str.toUpperCase().contains("someexamplestring".toUpperCase());
        
                                      or
        
            Str.toLowerCase().contains("someexamplestring".toLowerCase());
        

        【讨论】:

          猜你喜欢
          • 2010-09-19
          • 2013-07-07
          • 1970-01-01
          • 2018-10-15
          • 1970-01-01
          • 2019-10-04
          • 2013-05-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多