String.Contains()忽略大小写和文化

时间:2013-04-26 22:33:22

标签: c# windows-phone-7

我只发现了StringComparison,但这对于Contains不起作用。 另一个必要的事情是忽略大小写,而“ä”应该等同于“a”。

3 个答案:

答案 0 :(得分:5)

内部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))
   .....

答案 1 :(得分:5)

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;
}

答案 2 :(得分:1)

多出一个umlaut。 “ä”与“a”不同。如果你想改变它,你需要明确地做。