javascript - palabra - ¿Cómo compruebo si la cadena contiene subcadena?
javascript find substring in string (13)
Esta pregunta ya tiene una respuesta aquí:
Tengo un carrito de compras que muestra las opciones de productos en un menú desplegable y si seleccionan "sí", quiero hacer visibles otros campos en la página.
El problema es que el carrito de la compra también incluye el modificador de precio en el texto, que puede ser diferente para cada producto. El siguiente código funciona:
$(document).ready(function() {
$(''select[id="Engraving"]'').change(function() {
var str = $(''select[id="Engraving"] option:selected'').text();
if (str == "Yes (+ $6.95)") {
$(''.engraving'').show();
} else {
$(''.engraving'').hide();
}
});
});
Sin embargo, preferiría usar algo como esto, que no funciona:
$(document).ready(function() {
$(''select[id="Engraving"]'').change(function() {
var str = $(''select[id="Engraving"] option:selected'').text();
if (str *= "Yes") {
$(''.engraving'').show();
} else {
$(''.engraving'').hide();
}
});
});
Solo deseo realizar la acción si la opción seleccionada contiene la palabra "Sí" e ignoraría el modificador de precio.
El método includes () determina si una cadena se puede encontrar dentro de otra cadena, devolviendo verdadero o falso según sea apropiado.
Sintaxis: -string.includes (searchString [, position])
searchString: -Una cadena a buscar dentro de esta cadena.
Posición: -Opcional. La posición en esta cadena en la que comenzar a buscar searchString; el valor predeterminado es 0.
string = ''LOL'';
console.log(string.includes(''lol'')); // returns false
console.log(string.includes(''LOL'')); // returns true
De otra manera:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
** Probado en Firefox, Safari 6 y Chrome 36 **
Devuelve el número de veces que la palabra clave se incluye en la cadena.
var count = "I have one keyword".match(/keyword/g);
var clean_count = !count ? false : count.length;
ECMAScript 6 introduce documentation , anteriormente llamado contains
.
Se puede usar así:
''foobar''.includes(''foo''); // true
''foobar''.includes(''baz''); // false
También acepta un segundo argumento opcional que especifica la posición en la que comenzar la búsqueda:
''foobar''.includes(''foo'', 1); // false
''foobar''.includes(''bar'', 1); // true
Se puede polyfilled con polyfilled para que funcione en navegadores antiguos.
Es bastante tarde para escribir esta respuesta, pero pensé en incluirla de todos modos. String.prototype
ahora tiene un método que includes
la verificación de subcadenas. Este método es sensible a mayúsculas y minúsculas.
var str = ''It was a good date'';
console.log(str.includes(''good'')); // shows true
console.log(str.includes(''Good'')); // shows false
Para verificar una subcadena, se puede tomar el siguiente enfoque:
if (mainString.toLowerCase().includes(substringToCheck.toLowerCase())) {
// mainString contains substringToCheck
}
Echa un vistazo a la documentation para saber más.
Me gusta esto:
if (str.indexOf("Yes") >= 0)
... o puede usar el operador tilde:
if (~str.indexOf("Yes"))
Esto funciona porque indexOf()
devuelve -1
si no se encontró la cadena.
Tenga en cuenta que esto distingue entre mayúsculas y minúsculas.
Si desea una búsqueda que no distinga mayúsculas y minúsculas, puede escribir
if (str.toLowerCase().indexOf("yes") >= 0)
O,
if (/yes/i.test(str))
Nada de lo anterior funcionó para mí ya que había espacios en blanco, pero esto es lo que hice
tr = table.getElementsByTagName("tr");
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[0];
bottab.style.display="none";
bottab2.style.display="none";
if (td) {
var getvar=td.outerText.replace(//s+/, "") ;
if (getvar==filter){
tr[i].style.display = "";
}else{
tr[i].style.display = "none";
}
}
}
Puedes definir un método de extensión y usarlo más tarde.
String.prototype.contains = function(it)
{
return this.indexOf(it) != -1;
};
Para que puedas usar en tu página en cualquier lugar como:
var str="hello how are you";
str.contains("are");
que devuelve cierto .
Consulte la publicación de abajo para más métodos de ayuda de extensión. Métodos de ayuda de Javascript
Puedes usar este Polyfill en ie y chrome
if (!(''contains'' in String.prototype)) {
String.prototype.contains = function (str, startIndex) {
"use strict";
return -1 !== String.prototype.indexOf.call(this, str, startIndex);
};
}
Sé que la mejor manera es str.indexOf(s) !== -1;
http://hayageek.com/javascript-string-contains/
Sugiero otra manera ( str.replace(s1, "") !== str
):
var str = "Hello World!", s1 = "ello", s2 = "elloo";
alert(str.replace(s1, "") !== str);
alert(str.replace(s2, "") !== str);
Si es capaz de usar bibliotecas, puede encontrar que la biblioteca Lo-Dash JS es bastante útil. En este caso, siga adelante y verifique _.contains()
(reemplazado por _.includes()
partir de v4).
(Tenga en cuenta que la convención de Lo-Dash es nombrar el objeto de la biblioteca _. No olvide revisar la instalación en la misma página para configurarlo para su proyecto).
_.contains("foo", "oo"); // → true
_.contains("foo", "bar"); // → false
// Equivalent with:
_("foo").contains("oo"); // → true
_("foo").contains("bar"); // → false
En su caso, siga adelante y use:
_.contains(str, "Yes");
// or:
_(str).contains("Yes");
..que el que más te guste.
También puede verificar si la palabra exacta está contenida en una cadena. P.ej:
function containsWord(haystack, needle) {
return (" " + haystack + " ").indexOf(" " + needle + " ") !== -1;
}
Uso:
containsWord("red green blue", "red"); // true
containsWord("red green blue", "green"); // true
containsWord("red green blue", "blue"); // true
containsWord("red green blue", "yellow"); // false
Así es como jQuery hace su método hasClass.