不敏感的StringA.Contains(StringB)?

这个问题在这里已经有了答案:

  • 不区分大小写'包含(字符串)'22个答案
  • 在C#中不区分大小写的比较[复制] 7个回答

  • 在执行检查之前,您可以将这两个字符串转换为大写字母:

    string1.ToUpperInvariant().Contains(string2.ToUpperInvariant())
    

    或者,如果您想在定义案例可检测性时考虑当前的文化:

    string1.ToUpper().Contains(string2.ToUpper())
    

    或者你甚至可以通过调用接受CultureInfoToUpper重载来使用特定的文化。

    代码分析警告CA1308中描述了转换为大写而非小写的原因:将字符串归一化为大写:

    字符串应该标准化为大写字母。 一小部分人物在转换为小写字母时不能往返。 进行往返意味着将字符从一种语言环境转换为另一种不同的表示字符数据的语言环境,然后从转换的字符中准确检索原始字符。

    根据迈克尔·卡普兰的说法,你可能想知道“小团体的人物”受到这种影响,显然至少有一些格鲁吉亚人的剧本存在这个问题。


    使用String.IndexOf方法(String,StringComparison)

    string str = "Some test String";
    string str2 = "test";
    if (str.IndexOf(str2, StringComparison.InvariantCultureIgnoreCase) > 0)
    {
        //str contains str2
    }
    else
    {
        //str does not contain str2
    }
    

    string1.ToUpper().Contains(string2.ToUpper())
    
    链接地址: http://www.djcxy.com/p/13085.html

    上一篇: Insensitive StringA.Contains(StringB)?

    下一篇: Case Insensitive comparison in C#