复杂的“包含”字符串比较
我正在开发一个C#4.5应用程序,我需要一个函数来返回true以进行以下比较:
“blaLéOnArd/ o bla”.ComplexContains(“leonardo”)
换句话说,我需要string.Compare(str1, str2, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols | CompareOptions.IgnoreNonSpace)
来检查“包含!
有人可以帮忙吗?
您可以使用适当的CompareInfo
然后CompareInfo.IndexOf(string, string, CompareOptions)
并检查结果对-1。 样品:
using System; using System.Globalization; class Program { static void Main() { var compareInfo = CultureInfo.InvariantCulture.CompareInfo; var options = CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols | CompareOptions.IgnoreNonSpace; var haystack = "bla Lé OnAr d/o bla"; var needle = "leonardo"; var index = compareInfo.IndexOf(haystack, needle, options); Console.WriteLine(index); // 4 } }
或者以方法forms:
private static bool ComplexContains(string source, string value) { var index = CultureInfo.InvariantCulture.CompareInfo.IndexOf (source, value, CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols | CompareOptions.IgnoreNonSpace); return index != -1; }