部分匹配ObservableCollection <string> Object </string>

时间:2010-10-21 14:30:58

标签: c# .net

好吧,假设我有一个ObservableCollection<string>对象。在这个对象中,我有各种各样的字符串:

SomeString01
SomeString-02
somestring-03
SOMESTRING.04
aString

我想接受一个输入,我们将其称为pattern并将其存储为来自用户界面的字符串,并在ObservableCollection上进行部分匹配。我需要对集​​合进行部分匹配,一切都将是不敏感。最后我想将这些编译成全新的ObservableCollection。以下是一些示例案例:

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应用程序中最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

像加贝斯在评论中回答的那样。

但稍微具体一点

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

答案 1 :(得分:0)

好的,我实际上在Google上挖了更多,并找到了更好的解决方案:

您可以使用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);

供稿人:JaredPar

来源:Case insensitive 'Contains(string)'


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

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
}