String.Contains()忽略大小写和区域性
本文关键字:大小写 区域性 Contains String | 更新日期: 2023-09-27 18:11:16
我只找到StringComparison,但这对Contains不起作用。另一个必要的事情是忽略大小写,"ä"应该等于"a"。
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"不一样。如果你想改变它,你需要明确地做