2010-07-23 3 views
5

Как определить, содержит ли массив строк некоторую часть строки? У меня есть массив как этотC# Array содержит частичные

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 
} 

я хочу, чтобы запустить этот блок, если при Обл содержит строку Thats полностью или часть любого из массива п.

ответ

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

+0

Здесь хорошо работает код Джона. Вам не хватает чего-то из вашего примера. –

+0

Проверьте мой обновленный код сейчас. – coure2011

0

Если вы ищете, если определенная строка в вашем массиве содержит только «@ gmail.com» вместо «[email protected]», у вас есть несколько вариантов.

На стороне ввода здесь есть множество вопросов, которые указывают на то, что вам нужно перейти, чтобы подтвердить, что ваш ввод является допустимым адресом электронной почты.

Если вы можете проверить только на заднем конце, я хотел бы сделать что-то вроде:

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

Вы также можете использовать Regex соответствия, но я далеко не достаточно знакомы с тем, чтобы сказать вам, что модель вам нужно.

Если вы ищете только что-нибудь содержащее «@ gmail.com», ответ Джона - ваши лучшие ставки.

Смежные вопросы