String.Contains()忽略大小写和区域性

本文关键字:大小写 区域性 Contains String | 更新日期: 2023-09-27 18:11:16

我只找到StringComparison,但这对Contains不起作用。另一个必要的事情是忽略大小写,"ä"应该等于"a"。

String.Contains()忽略大小写和区域性

public static bool CustomContains(this string source, string toCheck)
{
        CompareInfo ci = new CultureInfo("en-US").CompareInfo;
        CompareOptions co = CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace;
        return ci.IndexOf(source, toCheck, co) != -1;
}

内部string.Contains使用字符串。IndexOf传递一个StringComparison.Ordinal
所以我认为你可以很容易地编写一个方法使用Contains

的相同实现
public bool CaseContains(string baseString, string textToSearch, StringComparison comparisonMode)
{
    return (baseString.IndexOf(textToSearch, comparisonMode) != -1);
}

和调用

if(CaseContains(myString, mySearch, StringComparison.CurrentCultureIgnoreCase))
  ....
这种方法的一个优雅的演变是创建一个扩展方法
public static class StringExtensions
{
    public static bool CaseContains(this string baseString, string textToSearch, StringComparison comparisonMode)
    {
        return (baseString.IndexOf(textToSearch, comparisonMode) != -1);
    }
}

和调用

if(myString.CaseContains(mySearch, StringComparison.CurrentCultureIgnoreCase))
   .....

这是a的变音符。"ä"answers"a"不一样。如果你想改变它,你需要明确地做