Frage Wie überprüfe ich, ob die Zeichenfolge Teilzeichenfolge enthält? [Duplikat]


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.


853
2017-08-13 21:25


Ursprung


Antworten:


So was:

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

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

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

Das funktioniert weil indexOf() kehrt zurück -1 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))

1889
2017-08-13 21:28



Du könntest benutzen Suche oder Spiel dafür.

str.search( 'Yes' )

gibt die Position der Übereinstimmung zurück oder -1, wenn sie nicht gefunden wird.


108
2017-08-13 21:29



Ein anderer Weg:

var testStr = "This is a test";

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

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


24
2018-02-20 19:44



Es ist ziemlich spät, um diese Antwort zu schreiben, aber ich dachte darüber nach, es irgendwie einzuschließen. String.prototype hat jetzt eine Methode includes was nach Teilzeichenfolge prüfen kann. Diese Methode unterscheidet zwischen Groß- und Kleinschreibung.

var str = 'It was a good date';
console.log(str.includes('good')); // shows true
console.log(str.includes('Good')); // shows false

Um nach einem Teilstring zu suchen, kann der folgende Ansatz verwendet werden:

if (mainString.toLowerCase().includes(substringToCheck.toLowerCase())) {
    // mainString contains substringToCheck
}

Besuche die Dokumentation mehr wissen.


23
2018-05-07 13:38



ECMAScript 6 führt ein String.prototype.includes, 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 sein polygefüllt damit es mit alten Browsern funktioniert.


9
2018-04-16 23:00



Sie können dieses Polyfill in ie und chrome verwenden

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

7
2017-07-03 14:09



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;

6
2017-10-18 05:12



Die Methode includes () bestimmt, ob eine Zeichenfolge innerhalb einer anderen Zeichenfolge gefunden werden kann, und gibt gegebenenfalls true oder false zurück.

Syntax: -string.includes (Suchstring [, Position])

searchString: Eine Zeichenfolge, nach der in dieser Zeichenfolge gesucht werden soll.

Position: -Optional. Die Position in dieser Zeichenfolge, bei der mit der Suche nach Suchzeichenfolge begonnen werden soll. Standardwert ist 0.

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

3
2017-11-18 17:45