int index1 = Array.IndexOf(myKeys, "foot");
示例我的数组列表中有FOOT
,但它会返回index1 = -1
的值。
如何通过忽略大小写找到foot
的索引?
答案 0 :(得分:17)
使用FindIndex
和一点lambda。
var ar = new[] { "hi", "Hello" };
var ix = Array.FindIndex(ar, p => p.Equals("hello", StringComparison.CurrentCultureIgnoreCase));
答案 1 :(得分: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);
通常对较大的阵列最有效,最好是静态的。