javascript - ¿Cómo puedo verificar si string contiene una subcadena?


Esta pregunta ya tiene una respuesta aquí:

Tengo un carrito de compras que muestra las opciones del producto en un menú desplegable, y quiero que algunos otros campos en la página solo sean visibles si seleccionan "Sí" en la opción anterior. El problema es que el carro de compras también incluye el modificador de precio en el texto, y eso puede ser diferente para cada producto. Entonces, si hago esto, 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, prefiero usar algo como esto:

$(document).ready(function() {
    $('select[id="Engraving"]').change(function() {
        var str = $('select[id="Engraving"] option:selected').text();
        if (str *= "Yes") {
            $('.engraving').show();
        } else {
            $('.engraving').hide();
        }
    });
});

Lo cual no funciona.

Solo quiero realizar la acción si la opción seleccionada contiene la palabra "Sí" e ignoraría el modificador de precio.

Agradezco cualquier ayuda.


Answers



Me gusta esto:

if (str.indexOf("Yes") >= 0)

... o puedes usar el operador de tilde:

if (~str.indexOf("Yes"))

Esto funciona porque indexOf() devuelve -1 si la cadena no se encontró en absoluto.

Tenga en cuenta que esto distingue entre mayúsculas y minúsculas.
Si desea una búsqueda que no distinga entre mayúsculas y minúsculas, puede escribir

if (str.toLowerCase().indexOf("yes") >= 0)

O,

if (/yes/i.test(str))



Puede usar la búsqueda o la coincidencia para esto.

str.search( 'Yes' )

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




De otra manera:

var testStr = "This is a test";

if(testStr.contains("test")){
    alert("String Found");
}

** Probado en Firefox, Safari 6 y Chrome 36 **




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 documentación para saber más.




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);
    };
}



ECMAScript 6 introduce String.prototype.includes , 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 rellenar para que funcione en navegadores antiguos.




Devuelve el número de veces que la palabra clave está incluida en la cadena.

var count = "I have one keyword".match(/keyword/g);
var clean_count = !count ? false : count.length;



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);




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.




Si eres capaz de usar bibliotecas, es posible que la biblioteca Lo-Dash JS sea bastante útil. En este caso, vaya y compruebe _.contains() (reemplazado por _.includes() partir de v4).

(Tenga en cuenta que la convención Lo-Dash está nombrando el objeto de la biblioteca _. No olvide verificar 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 tu caso, sigue y usa:

_.contains(str, "Yes");
// or:
_(str).contains("Yes");

..cualquiera que te guste 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 



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";
            }

        }
    }



puede definir un método de extensión y usarlo más adelante.

String.prototype.contains = function(it) 
{ 
   return this.indexOf(it) != -1; 
};

para que pueda usar en su página en cualquier lugar como:

var str="hello how are you";
str.contains("are");

que devuelve verdadero .

Consulte la publicación a continuación para obtener más métodos de ayuda de extensión. Métodos de ayuda de Javascript