Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 部分匹配可观测集合<;字符串>;对象_C#_.net - Fatal编程技术网

C# 部分匹配可观测集合<;字符串>;对象

C# 部分匹配可观测集合<;字符串>;对象,c#,.net,C#,.net,好吧,假设我有一个可观察的集合对象。在这个对象中,我有多种字符串: SomeString01 SomeString-02 somestring-03 SOMESTRING.04 aString 我想获取一个输入,我们将其称为模式,并从用户界面将其存储为字符串,然后在可观测集合上进行部分匹配。我需要对集合进行部分匹配,所有内容都不区分大小写。最后,我想把它们编译成一个全新的可观察集合。下面是一些例子: pattern = "SoME" // RESULTS: SomeString01 Some

好吧,假设我有一个
可观察的集合
对象。在这个对象中,我有多种字符串:

SomeString01
SomeString-02
somestring-03
SOMESTRING.04
aString
我想获取一个输入,我们将其称为
模式
,并从用户界面将其存储为字符串,然后在
可观测集合
上进行部分匹配。我需要对集合进行部分匹配,所有内容都不区分大小写。最后,我想把它们编译成一个全新的
可观察集合
。下面是一些例子:

pattern = "SoME"

// RESULTS:
SomeString01
SomeString-02
somestring-03
SOMESTRING.04

/* --- */

pattern = "-0"

// RESULTS:
SomeString-02
somestring-03

/* --- */

pattern = "ING0"

// RESULTS:
SomeString01

pattern = "s"

// RESULTS:
SomeString01
SomeString-02
somestring-03
SOMESTRING.04
aString

在ClickOnce应用程序中,实现这一点的最佳方法是什么?

好的,我实际上在谷歌上做了更多研究,找到了更好的解决方案:

您可以使用IndexOf()并传递StringComparison.OrdinalIgnoreCase

string title = "STRING";
bool contains = title.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;
更好的方法是为字符串定义一个新的扩展方法:

public static bool Contains(this string source, string toCheck, StringComparison comp)
{
    return source.IndexOf(toCheck, comp) >= 0;
}

string title = "STRING";
bool contains = title.Contains("string", StringComparison.OrdinalIgnoreCase);
贡献者:

资料来源:


现在我在我的源代码中实现了它,如下所示:

foreach (string source in SourceStrings)
{
    // Code for some pre-reqs here

    if (source.IndexOf(Pattern, StringComparison.OrdinalIgnoreCase) >= 0)
    {
        subset.Add(source);
    }

    // Finish up anything else I had to do here
}

好的,我实际上在谷歌上做了更多的研究,找到了一个更好的解决方案:

您可以使用IndexOf()并传递StringComparison.OrdinalIgnoreCase

string title = "STRING";
bool contains = title.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;
更好的方法是为字符串定义一个新的扩展方法:

public static bool Contains(this string source, string toCheck, StringComparison comp)
{
    return source.IndexOf(toCheck, comp) >= 0;
}

string title = "STRING";
bool contains = title.Contains("string", StringComparison.OrdinalIgnoreCase);
贡献者:

资料来源:


现在我在我的源代码中实现了它,如下所示:

foreach (string source in SourceStrings)
{
    // Code for some pre-reqs here

    if (source.IndexOf(Pattern, StringComparison.OrdinalIgnoreCase) >= 0)
    {
        subset.Add(source);
    }

    // Finish up anything else I had to do here
}

就像盖布在评论中回答的那样

但更具体一点

.Where(x => x.IndexOf("Some",StringComparison.InvariantCultureIgnoreCase) != -1)

就像盖布在评论中回答的那样

但更具体一点

.Where(x => x.IndexOf("Some",StringComparison.InvariantCultureIgnoreCase) != -1)

你不能在收藏中使用
。其中(x=>)
?@saurabh。。。对集合执行不区分大小写的部分匹配的最佳方法是什么。我在陈述我的问题时做得不好吗?@Gabe我本来想这么做的,但我对案件不敏感。所以我觉得我做了一些很难/错误的事情。你不能在收藏中使用
。Where(x=>)
?@saurabh。。。对集合执行不区分大小写的部分匹配的最佳方法是什么。我在陈述我的问题时做得不好吗?@Gabe我本来想这么做的,但我对案件不敏感。所以我觉得我做的事情很艰难/错误。使用它与
。Where(x=>x.IndexOf(pattern,StringComparison.ordinallingorecase>=0)有什么区别
?或者这6个是单向的,半打是另一个吗?这是一个很好的书写方式。我不知道如何有效地在评论中发布链接。几乎6个是单向的,半打是另一个。使用它与
有什么区别。其中(x=>x.IndexOf(pattern,StringComparison.OrdinalIgnoreCase>=0)
?或者这是一种方式,半打是另一种方式?这是一种很好的写作方式。我不知道如何有效地在评论中发布链接。几乎是一种方式,半打是另一种方式