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