3

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

4

3 回答 3

10
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;
}
于 2016-03-28T01:52:14.110 回答
6

在内部string.Contains使用 string.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))
   .....
于 2013-04-26T22:41:31.550 回答
1

那是a的变音符号。“ä”与“a”不同。如果你想改变它,你需要明确地去做。

于 2013-04-26T22:36:15.723 回答