2015-02-24 47 views

回答

2

你可以使用FindIndex

int ix = ExtPos.FindIndex(x => ".DAT".Equals(x, StringComparison.CurrentCultureIgnoreCase)); 

或者你可以使用StringComparer:它更 「性」 來null(注意我是如何建造的previos比較:我把「100%沒有空,因爲它是在Equals左側的固定字符串」值!)

int ix = ExtPos.FindIndex(x => StringComparer.CurrentCultureIgnoreCase.Equals(".DAT", x)); 
+0

FindIndex工作完美,謝謝! (我得到了String.Compare(ext,x,StringComparison.CurrentCultureIgnoreCase)== 0作爲謂詞) – Georg 2015-02-24 13:24:02

+0

@Georg使用'Compare'然後'== 0'感覺有點不對。在這種情況下最好使用'Equals'(它立即返回一個「bool」)。你可以考慮使用'OrdinalIgnoreCase'。用字符串進行相等性檢查的默認值是一個序數比較,所以如果你想要「像平常一樣平等,只有大小寫不敏感」,你可能更喜歡'OrdinalIgnoreCase'。 – 2015-02-24 13:46:52

+0

沒錯,Compare == 0看起來有點奇怪,「Equals」對於那些應用來說更好。 「CurrentCultureIgnoreCase」我不幸從xanatos中獲得,通常我使用更快的序數比較。 – Georg 2015-02-25 19:55:06

0

使用FindIndex method。像這樣:

private static int ExtToPos(string ext) 
{ 
    return ExtPos.FindIndex(_ => 
     string.Equals(_, ext, StringComparison.InvariantCultureIgnoreCase)); 
} 
+0

在哪個框架版本中?我正在使用.NET 4.0,並沒有可能將一個lambda函數傳遞給IndexOf函數。 – Georg 2015-02-24 11:57:58

+0

@Georg:對不起。它應該說'FindIndex'。我已經更新了我的答案。 – 2015-02-24 12:38:31

相關問題