复合物“包含”于字符串比较 [英] Complex "Contains" string comparison

查看:42
本文介绍了复合物“包含”于字符串比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm developing a C# 4.5 app and I need a function to return true for the following comparison:


blaLéOnArd / o bla .ComplexContains( leonardo)

"bla LéOnAr d/o bla".ComplexContains("leonardo")

换句话说,我需要 string.Compare( str1,str2,CultureInfo.InvariantCulture,CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols | CompareOptions.IgnoreNonSpace)还要检查包含!

In other words, I need string.Compare(str1, str2, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols | CompareOptions.IgnoreNonSpace) to also check for "contains!

Can有人帮忙吗?

推荐答案

您可以使用适当的 CompareInfo ,然后< a href = http://msdn.microsoft.com/zh-cn/library/b7zs7dcf.aspx rel = noreferrer> CompareInfo.IndexOf(string,string,CompareOptions) 并对照-1检查结果。示例:

You could use an appropriate CompareInfo and then CompareInfo.IndexOf(string, string, CompareOptions) and check the result against -1. Sample:

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

这篇关于复合物“包含”于字符串比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆