Quiero usar C # para verificar si un valor de cadena contiene una palabra en una matriz de cadenas. Por ejemplo,
string stringToCheck = "text1text2text3";
string[] stringArray = { "text1", "someothertext", etc... };
if(stringToCheck.contains stringArray) //one of the items?
{
}
¿Cómo puedo verificar si el valor de cadena para 'stringToCheck' contiene una palabra en la matriz?
Respuestas:
Aquí sabrás como podrás hacerlo:
ACTUALIZACIÓN: Puede que esté buscando una solución mejor ... consulte la respuesta de @Anton Gogolev a continuación que hace uso de LINQ.
fuente
Así es cómo:
Esto comprueba si
stringToCheck
contiene cualquiera de las subcadenas destringArray
. Si desea asegurarse de que contiene todas las subcadenas, cambieAny
aAll
:fuente
stringArray.Any(s => s.IndexOf(stringToCheck, StringComparison.CurrentCultureIgnoreCase) > -1)
Prueba esto:
No es necesario usar LINQ
fuente
stringArray.Any(w => stringToCheck.IndexOf(w) >= 0)
pero la respuesta de Linq usando String.Contains tiene más sentido, ya que eso es exactamente lo que se solicita.Solo usa el método linq:
fuente
using System.Linq;
La forma más fácil y de muestra.
fuente
fuente
Algo como esto quizás:
fuente
String.Contains
podría ser mejor que aString.IndexOf
menos que desee ignorar el caso, ya que Microsoft olvidó un argumento dobleString.Contains
que tiene que escribir el suyo. Considere:Array.Exists(stringArray, s => stringToCheck.IndexOf(s, StringComparison.OrdinalIgnoreCase) > -1)
Usar Linq y el grupo de métodos sería la forma más rápida y compacta de hacerlo.
fuente
Puede definir sus propios
string.ContainsAny()
ystring.ContainsAll()
métodos. Comostring.Contains()
beneficio adicional, incluso he incluido un método que permite la comparación entre mayúsculas y minúsculas, etc.Puede probarlos con el siguiente código:
fuente
Uso lo siguiente en una aplicación de consola para verificar argumentos
fuente
Usaría Linq pero aún se puede hacer a través de:
fuente
Tratar:
fuente
También se puede hacer la misma cosa que Anton Gogolev sugiere para comprobar si cualquier artículo en
stringArray1
coincide con cualquier artículo enstringArray2
:Y del mismo modo, todos los elementos en stringArray1 coinciden con todos los elementos en stringArray2:
fuente
fuente
intente esto, aquí el ejemplo: Para verificar si el campo contiene alguna de las palabras en la matriz. Para verificar si el campo (someField) contiene alguna de las palabras en la matriz.
fuente
fuente
Utilicé un método similar al IndexOf de Maitrey684 y el bucle foreach de Theomax para crear esto. (Nota: las primeras 3 líneas de "cadenas" son solo un ejemplo de cómo podría crear una matriz y ponerla en el formato adecuado).
Si desea comparar 2 matrices, estarán delimitadas por punto y coma, pero el último valor no tendrá una después. Si agrega un punto y coma a la forma de cadena de la matriz (es decir, a; b; c se convierte en a; b; c;), puede hacer coincidir usando "x;" no importa en qué posición se encuentre:
fuente
bFound se establece en true si la cadena buscada coincide con cualquier elemento de la matriz 'líneas'.
fuente
Prueba esto
Le devolverá la línea con la primera incidencia del texto que está buscando.
fuente
Si
stringArray
contiene una gran cantidad de cadenas de longitud variada, considere usar un Trie para almacenar y buscar la matriz de cadenas.Aquí está la implementación de la
Trie
clase.Si todas las cadenas
stringArray
tienen la misma longitud, será mejor usar solo una enHashSet
lugar de unaTrie
fuente
Solución simple, no se requiere linq ninguna
String.Join (",", array) .Contains (Valor + ",");
fuente
fuente
Prueba esto, no necesitas un bucle.
fuente
Para completar las respuestas anteriores, para la verificación IgnoreCase use:
fuente
Para mi caso, las respuestas anteriores no funcionaron. Estaba buscando una cadena en una matriz y asignándola a un valor booleano. Modifiqué la respuesta de @Anton Gogolev y eliminé el
Any()
método y lo pusestringToCheck
dentro delContains()
método.fuente
Usando los métodos Find o FindIndex de la clase Array :
fuente
Usé el siguiente código para verificar si la cadena contenía alguno de los elementos de la matriz de cadenas:
fuente
Text = "matched"
tantas veces comostringToCheck
contiene subcadenas destringArray
. Es posible que desee poner unbreak
oreturn
después de la tarea.Tres opciones demostradas. Prefiero encontrar el tercero como el más conciso.
fuente