4

可能重复:
如何向 Array.IndexOf 添加不区分大小写的选项

int index1 = Array.IndexOf(myKeys, "foot");

示例我FOOT的数组列表中有,但它会返回index1 = -1.

如何foot通过忽略大小写找到索引?

4

2 回答 2

17

通过使用FindIndex和一点 lambda。

var ar = new[] { "hi", "Hello" };
var ix = Array.FindIndex(ar, p => p.Equals("hello", StringComparison.CurrentCultureIgnoreCase));
于 2012-07-19T08:14:24.100 回答
1

使用一个IComparer<string>类:

public class CaseInsensitiveComp: IComparer<string>
{    
    private CaseInsensitiveComparer _comp = new CaseInsensitiveComparer();
    public int Compare(string x, string y)
    {
        return _comp.Compare(x, y);
    }
}

然后对排序后的数组执行 BinarySearch :

var myKeys = new List<string>(){"boot", "FOOT", "rOOt"};
IComparer<string> comp = new CaseInsensitiveComp();

myKeys.Sort(comp);

int theIndex = myKeys.BinarySearch("foot", comp);

通常在更大的阵列上最有效,最好是静态的。

于 2012-07-19T08:41:26.160 回答