c# - 复杂的 "Contains"字符串比较

标签 c# string-comparison

我正在开发一个 C# 4.5 应用程序,我需要一个函数来返回 true 以进行以下比较:

"bla LéOnAr d/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
    }
}

或者方法形式:

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

关于c# - 复杂的 "Contains"字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15178922/

相关文章:

c# - DataContext.ExecuteQuery<TEntity> 和 Null 值

c# - 如何将多维数组的值写入文本文件

string - 使用 Stream API 比较两个字符串并计算差异

c# - 等待 : Textfields are not getting automated while running the code as

c# - 创建 n 元表达式

c# - 我的(巨大的)应用程序抛出了 OutOfMemoryException,现在怎么办?

c++ - string1 == string2和您自己的for循环比较之间有什么区别?

c++ - 比较字 rune 字与 C++ 中的 Std::String

javascript - 比较javascript中的2个字符串

python - 如何比较 Python 中的版本号?