我们说我有这个代码
string seachKeyword = "";
List<string> sl = new List<string>();
sl.Add("store");
sl.Add("State");
sl.Add("STAMP");
sl.Add("Crawl");
sl.Add("Crow");
List<string> searchResults = sl.FindAll(s => s.Contains(seachKeyword));
Run Code Online (Sandbox Code Playgroud)
如何忽略包含搜索中的字母大小写?
谢谢,
Ces*_*ere 83
使用Linq,这为.Compare添加了一个新方法
using System.Linq;
using System.Collections.Generic;
List<string> MyList = new List<string>();
MyList.Add(...)
if (MyList.Contains(TestString, StringComparer.CurrentCultureIgnoreCase)) {
//found
}
Run Code Online (Sandbox Code Playgroud)
所以大概是这样的
using System.Linq;
...
List<string> searchResults = sl.FindAll(s => s.Contains(seachKeyword, StringComparer.CurrentCultureIgnoreCase));
Run Code Online (Sandbox Code Playgroud)
Iga*_*nik 65
最好的选择是使用序数不区分大小写的比较,但是该Contains方法不支持它.
您可以使用以下方法执行此操作:
sl.FindAll(s => s.IndexOf(searchKeyword, StringComparison.OrdinalIgnoreCase) >= 0);
Run Code Online (Sandbox Code Playgroud)
最好将它包装在扩展方法中,例如:
public static bool Contains(this string target, string value, StringComparison comparison)
{
return target.IndexOf(value, comparison) >= 0;
}
Run Code Online (Sandbox Code Playgroud)
所以你可以使用:
sl.FindAll(s => s.Contains(searchKeyword, StringComparison.OrdinalIgnoreCase));
Run Code Online (Sandbox Code Playgroud)
Jer*_*yal 22
您可以Contains通过提供不区分大小写的字符串相等比较器来使用,如下所示:
if (myList.Contains(keyword, StringComparer.OrdinalIgnoreCase))
{
Console.WriteLine("Keyword Exists");
}
Run Code Online (Sandbox Code Playgroud)
最佳解决方案是在执行比较时忽略这种情况
List<string> searchResults = sl.FindAll(s => s.IndexOf(seachKeyword, System.StringComparison.OrdinalIgnoreCase) >= 0);
Run Code Online (Sandbox Code Playgroud)
StringComparer.CurrentCultureIgnoreCase is a better approach instead of using indexOf.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70230 次 |
| 最近记录: |