[Javascript] ¿Cómo puedo verificar si string contiene una subcadena?


Answers

Puede usar la search o la match para esto.

str.search( 'Yes' )

devolverá la posición del partido, o -1 si no se encuentra.

Question

Esta pregunta ya tiene una respuesta aquí:

Tengo un carrito de compras que muestra las opciones del producto en un menú desplegable y si seleccionan "sí", quiero que otros campos de la página estén visibles.

El problema es que el carro de compras 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 quiero realizar la acción si la opción seleccionada contiene la palabra "Sí" e ignoraría el modificador de precio.




Es bastante tarde para escribir esta respuesta, pero pensé en incluirla de todos modos. String.prototype ahora tiene un método que puede verificar la subcadena. 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
}

Consulte la documentation para saber más.




El método includes () determina si una cadena se puede encontrar dentro de otra cadena, devolviendo verdadero o falso según corresponda.

Sintaxis: -string.includes (searchString [, position])

searchString: una cadena que se debe buscar dentro de esta cadena.

posición: -Opcional. La posición en esta cadena en la que comenzar a buscar searchString; por defecto es 0.

string = 'LOL';
console.log(string.includes('lol')); // returns false 
console.log(string.includes('LOL')); // returns true 



Puede usar este Polyfill en ie y cromo

if (!('contains' in String.prototype)) {
    String.prototype.contains = function (str, startIndex) {
        "use strict";
        return -1 !== String.prototype.indexOf.call(this, str, startIndex);
    };
}



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.




Ninguno de los anteriores 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";
            }

        }
    }