2010-07-23 106 views
5

如何找到一個字符串數組是否包含字符串的某些部分? 我有這樣C#數組包含部分

String[] stringArray = new [] { "[email protected]", "[email protected]", "@gmail.com" }; 
string str = "[email protected]" 

if (stringArray.Any(x => x.Contains(str))) 
{ 
    //this if condition is never true 
} 

陣列我想運行此如果塊時STR包含字符串多數民衆贊成完全或任何陣列的項目的一部分。

回答

15

假設你已經有了可用的LINQ:

bool partialMatch = stringArray.Any(x => str.Contains(x)); 

即使沒有LINQ很容易:

bool partialMatch = Array.Exists(stringArray, x => str.Contains(x)); 

,或者使用C#2:

bool partialMatch = Array.Exists(stringArray, 
     delegate(string x) { return str.Contains(x)); }); 

如果您正在使用C# 1,那麼您可能必須這樣做,艱難地:)

+0

看到使用我的更新代碼的片段,但它不工作。 – coure2011 2010-07-23 16:30:48

+0

喬恩的代碼在這裏工作得很好。你從你的例子中錯過了一些東西。 – 2010-07-23 16:34:56

+0

請立即結帳我更新的代碼。 – coure2011 2010-07-23 18:13:42

0

如果你正在尋找,如果你的陣列中的特定字符串只包含「@ gmail.com」,而不是「[email protected]」你有幾個選項。

在投入方面,也有各種各樣的在這裏做題,這將指向你,你需要去驗證您的輸入是一個有效的電子郵件地址的方向。

如果你只能在後端檢查,我會做一些事情,如:

emailStr = "@gmail.com"; 
if(str.Contains(emailStr) && str.length == emailStr.length) 
{ 
    //your processing here 
} 

您還可以使用正則表達式匹配,但我幾乎沒有足夠的熟悉與該告訴你什麼花樣你需要。

如果您正在尋找任何包含「@ gmail.com」的內容,Jon的答案就是您的最佳投注。