2010-07-23 67 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的答案就是您的最佳投注。