好吧,假设我有一个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应用程序中最好的方法是什么?
答案 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
}