4

重複の可能性:
大文字と小文字を区別しないオプションを Array.IndexOf に追加する方法

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

例 私はFOOT配列リストに持っていますが、 の値を返しますindex1 = -1

大文字と小文字を区別せずにインデックスを見つけるにはどうすればよいfootですか?

4

2 に答える 2

17

FindIndex少しラムダを使用して。

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 に答える