javascript länge meta - Wie überprüfe ich, ob die Zeichenfolge Teilzeichenfolge enthält?




7 Answers

So was:

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

... oder Sie können den Tilde-Operator verwenden:

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

Dies funktioniert, weil indexOf() -1 zurückgibt, wenn die Zeichenfolge überhaupt nicht gefunden wurde.

Beachten Sie, dass hierbei zwischen Groß- und Kleinschreibung unterschieden wird.
Wenn Sie eine Suche ohne Beachtung der Groß- / Kleinschreibung durchführen möchten, können Sie schreiben

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

Oder,

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

Diese Frage hat hier bereits eine Antwort:

Ich habe einen Einkaufswagen, der Produktoptionen in einem Dropdown-Menü anzeigt, und wenn sie "Ja" auswählen, möchte ich einige andere Felder auf der Seite sichtbar machen.

Das Problem ist, dass der Einkaufswagen auch den Preismodifikator im Text enthält, der für jedes Produkt unterschiedlich sein kann. Der folgende Code funktioniert:

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

Allerdings würde ich lieber so etwas verwenden, was nicht funktioniert:

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

Ich möchte nur die Aktion ausführen, wenn die ausgewählte Option das Wort "Ja" enthält und den Preismodifikator ignorieren würde.




Ein anderer Weg:

var testStr = "This is a test";

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

** Getestet auf Firefox, Safari 6 und Chrome 36 **




ECMAScript 6 führt documentation , zuvor genannt, contains .

Es kann so verwendet werden:

'foobar'.includes('foo'); // true
'foobar'.includes('baz'); // false

Es akzeptiert auch ein optionales zweites Argument, das die Position angibt, an der die Suche beginnen soll:

'foobar'.includes('foo', 1); // false
'foobar'.includes('bar', 1); // true

Es kann polyfilled , damit es in alten Browsern funktioniert.




Gibt an, wie oft das Schlüsselwort in der Zeichenfolge enthalten ist.

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



Ich weiß, dass der beste Weg str.indexOf(s) !== -1; http://hayageek.com/javascript-string-contains/

Ich schlage einen anderen Weg vor ( str.replace(s1, "") !== str ):

var str = "Hello World!", s1 = "ello", s2 = "elloo";
alert(str.replace(s1, "") !== str);
alert(str.replace(s2, "") !== str);




Wenn Sie in der Lage sind, Bibliotheken zu verwenden, können Sie feststellen, dass die Lo-Dash JS-Bibliothek sehr nützlich ist. Gehen Sie in diesem Fall vor und überprüfen Sie _.contains() (ersetzt durch _.includes() ab v4).

(Hinweis: Die Lo-Dash-Konvention benennt das Bibliotheksobjekt _. Vergessen Sie nicht, die Installation auf derselben Seite zu überprüfen, um sie für Ihr Projekt einzurichten.)

_.contains("foo", "oo");     // → true
_.contains("foo", "bar");    // → false
// Equivalent with:
_("foo").contains("oo");     // → true
_("foo").contains("bar");    // → false

In Ihrem Fall, gehen Sie vor und verwenden Sie:

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

..wie auch immer du es magst.




Sie können eine Erweiterungsmethode definieren und später verwenden.

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

so dass Sie in Ihrer Seite überall wie verwenden können:

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

was wahr zurückgibt.

Lesen Sie weiter unten für weitere Erweiterungshilfsmethoden. Javascript-Hilfsmethoden




Related