2009-11-25 56 views
1

我想做一个字符串列表的搜索,不敏感的帽子。非帽敏感搜索C#

试过。载和==

有没有做到这一点的方法,否则我将不得不将字符串转换为noncaps的完整列表,然后搜索?

干杯!

+0

我觉得你的意思写了“不区分大小写”搜索 – Mikeage 2009-11-25 04:24:11

回答

3

一种方法来做到这一点。

var answer = list.FirstOrDefault(item => item.Equals("test", StringComparison.CurrentCultureIgnoreCase)); 
+0

你将最终获得的NullReferenceException在这里轻松地当item为null时。 – 2009-11-25 04:32:14

+1

这样做是为了使它安全:''test“.Equals(item,StringComparison.CurrentCultureIgnoreCase)''。 – 2009-11-25 04:34:44

+0

FirstOrDefault来自 – baron 2009-11-25 04:38:24

2

假设你使用C#3:

var all = new [] {"A", "a", "AB", "aB", "Ab". "Etc"}; 
var searchItem = "A"; 
var found = all.Where (x => string.Compare(x, searchItem, StringComparison.InvariantCultureIgnoreCase) == 0); 

foreach(var foundItem in found) 
    Console.WriteLine(foundItem); 
0

您可以简单地使用String.ToUpper()作为非敏感的比较。 (你只是比较两个字符串的大写字母)。

或者有更先进的字符串比较佣工.NET LIB:

参见: http://en.csharp-online.net/CSharp_FAQ:_How_perform_a_case_insensitive_string_comparison

+1

这通常不是一个好主意,尤其是在进行多次比较时。因为字符串是不可变的,所以必须创建一个临时字符串来进行比较。 – Phaedrus 2009-11-25 04:38:25