情结 “包含” 字符串比较
问题描述:
我正在开发一个C#4.5应用程序,我需要一个函数来进行下面的比较返回true:情结 “包含” 字符串比较
“BLALéOnArd/O喇嘛” .ComplexContains( “达芬奇” )
换句话说,我需要string.Compare(str1, str2, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols | CompareOptions.IgnoreNonSpace)
还需要检查“载!
谁能帮助?
答
你可以使用一个approp ri 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
}
}
还是在方法形式:
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;
}
+1的草垛和针。 :) – publicgk 2013-03-02 20:28:22
+1快速问题,虽然... EF5如何很好地转换到TSQL?即时通讯在这里使用LINQ ... – Leonardo 2013-03-02 20:47:48
@Leonardo:我非常怀疑它处理的是 - 我不会指望它。 (未来,请在原始问题中给出*关键*这样的细节。) – 2013-03-02 20:50:26