2010-07-23 26 views
5

¿Cómo encontrar si una matriz de cadenas contiene alguna parte de la cadena? tengo matriz como éstaC# La matriz contiene parcial

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 
} 

Quiero correr si este bloque cuando str contiene una cadena que eso es todo o parte de cualquiera de los puntos de matriz.

Respuesta

15

Suponiendo que tienes LINQ disponibles:

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

Incluso sin LINQ es fácil:

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

o usando C# 2:

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

Si estás usando C# 1 entonces probablemente tengas que hacerlo de la manera difícil :)

+0

ver mi código de actualización utilizando su fragmento, pero no está funcionando. – coure2011

+0

El código de Jon funciona bien aquí. Te estás perdiendo algo de tu ejemplo. –

+0

Por favor, compruebe mi código actualizado ahora. – coure2011

0

Si está buscando si una cadena en particular en su matriz contiene solo "@ gmail.com" en lugar de "[email protected]", tiene un par de opciones.

En el lado de entrada, hay una variedad de preguntas aquí en SO que le indicará en la dirección que necesita para validar que su entrada es una dirección de correo electrónico válida.

Si sólo se puede comprobar en la parte de atrás, lo haría algo como:

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

También puede utilizar expresiones regulares a juego, pero no soy lo suficientemente cerca familiarizado con ese que le diga qué patrón lo necesitarías

Si está buscando cualquier cosa que contenga "@ gmail.com", la respuesta de Jon es su mejor apuesta.

Cuestiones relacionadas