¿Cómo comprobar si una cadena contiene texto de una serie de subcadenas en JavaScript?
Muy claro. En javascript, necesito verificar si una cadena contiene subcadenas contenidas en una matriz.
No hay nada integrado que haga eso por usted, tendrá que escribir una función para ello, aunque puede ser solo una devolución de llamada al some
método de matriz.
Dos enfoques para usted:
some
método de matriz- Expresión regular
Formaciónsome
El some
método de matriz (agregado en ES5) hace que esto sea bastante sencillo:
if (substrings.some(function(v) { return str.indexOf(v) >= 0; })) {
// There's at least one
}
Aún mejor con una función de flecha y el includes
método más nuevo (ambos ES2015+):
if (substrings.some(v => str.includes(v))) {
// There's at least one
}
Ejemplo en vivo:
Mostrar fragmento de código
Expresión regular
Si sabes que las cadenas no contienen ninguno de los caracteres que son especiales en las expresiones regulares, entonces puedes hacer un poco de trampa, como esta:
if (new RegExp(substrings.join("|")).test(string)) {
// At least one match
}
...que crea una expresión regular que es una serie de alternancias para las subcadenas que estás buscando (por ejemplo, one|two
) y prueba para ver si hay coincidencias para alguna de ellas, pero si alguna de las subcadenas contiene algún carácter que sea especial. en expresiones regulares ( *
,, [
etc.), primero tendrías que escapar de ellas y es mejor que simplemente hagas el bucle aburrido. Para obtener información sobre cómo escapar de ellos, consulte las respuestas a esta pregunta .
Ejemplo en vivo:
Mostrar fragmento de código
Solución de una línea
substringsArray.some(substring=>yourBigString.includes(substring))
Devuelve true/false
si la subcadenaexists/doesn't exist
Necesita soporte ES6
var yourstring = 'tasty food'; // the string to check against
var substrings = ['foo','bar'],
length = substrings.length;
while(length--) {
if (yourstring.indexOf(substrings[length])!=-1) {
// one of the substrings is in yourstring
}
}