substring string auf - Wie prüfe ich, ob eine Zeichenfolge eine Unterzeichenfolge in JavaScript enthält?





15 Answers

Sie können mit dieser Anweisung leicht eine contains Methode zu String hinzufügen:

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

Hinweis: In den folgenden Kommentaren finden Sie ein gültiges Argument, wenn Sie dies nicht verwenden. Mein Rat: Verwenden Sie Ihr eigenes Urteilsvermögen.

Alternative:

if (typeof String.prototype.contains === 'undefined') { String.prototype.contains = function(it) { return this.indexOf(it) != -1; }; }
prüfen contains indexof

Normalerweise würde ich eine String.contains() -Methode erwarten, aber es scheint keine zu geben.

Was ist eine vernünftige Möglichkeit, dies zu überprüfen?




Es gibt eine string.includes in ES6 :

"potato".includes("to");
> true

Beachten Sie, dass Sie möglicherweise es6-shim oder ähnliches laden es6-shim , damit ältere Browser funktionieren.

require('es6-shim')



Sie können die JavaScript-Methode search() verwenden.

Syntax lautet: string.search(regexp)

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

Siehe dort Beispiele: jsref_search

Sie benötigen keine komplizierte Syntax für reguläre Ausdrücke. Wenn Sie mit ihnen nicht vertraut sind, reicht eine einfache st.search("title") . Wenn Sie möchten, dass Ihr Test zwischen Groß- und Kleinschreibung unterscheidet, sollten Sie st.search(/title/i) .




Wenn Sie nach einer Alternative zum Schreiben des hässlichen -1-Checks suchen, stellen Sie stattdessen eine ~ Tilde vor.

if (~haystack.indexOf('needle')) alert('found');

Joe Zimmerman - Sie werden sehen, dass Sie mit ~ on -1 den Wert 0 verwenden. Die Zahl 0 ist ein falsey-Wert, dh, der Wert wird als false ausgewertet, wenn er in einen Boolean konvertiert wird. Das mag auf den ersten Blick nicht wie ein großer Einblick erscheinen, aber erinnern Sie sich daran, dass Funktionen wie indexOf -1 zurückgeben, wenn die Abfrage nicht gefunden wird. Das bedeutet, anstatt etwas Ähnliches zu schreiben:

if (someStr.indexOf("a") >= 0) {
  // Found it
} else  {
  // Not Found
}

Sie können jetzt weniger Zeichen in Ihrem Code haben, so dass Sie ihn wie folgt schreiben können:

if (~someStr.indexOf("a")) {
  // Found it
} else  {
  // Not Found
}

Weitere Details hier




Eine gebräuchliche Methode zum Schreiben einer contains Methode in JavaScript ist:

if (!String.prototype.contains) {
    String.prototype.contains = function (arg) {
        return !!~this.indexOf(arg);
    };
}

Der bitweise Negationsoperator ( ~ ) wird verwendet, um -1 in 0 (Falsey) umzuwandeln, und alle anderen Werte sind ungleich Null (wahr).

Die doppelten booleschen Negationsoperatoren werden verwendet, um die Zahl in einen booleschen Wert umzuwandeln.




Anstatt Code-Snippets zu verwenden, die hier und dort im Web zu finden sind, können Sie auch eine bewährte und dokumentierte Bibliothek verwenden. Zwei Optionen, die ich empfehlen würde:

1. Option: Lodash : Es gibt eine Lodash Methode:

_.includes('foobar', 'ob');
// → true

Lodash ist die beliebteste Javascript-Bibliotheksabhängigkeit für npm und hat eine Menge praktischer Javascript-Dienstprogramm-Methoden. Für viele Projekte würde man das sowieso wollen ;-)

2. Option: Oder Underscore.string : Es gibt eine include Methode:

_.str.include('foobar', 'ob');
// → true

Hier ist die Beschreibung von Underscore.string, sie fügt lediglich 9kb hinzu, bietet Ihnen jedoch alle Vorteile, die eine bewährte und dokumentierte Bibliothek gegenüber copy'n'paste-Codeausschnitten bietet:

Underscore.string ist eine JavaScript-Bibliothek für komfortable Manipulation mit Strings, Erweiterung für Underscore.js, die von Prototype.js, Right.js, Underscore und schöner Ruby-Sprache inspiriert wurde.

Underscore.string bietet Ihnen mehrere nützliche Funktionen: Großschreibung, Bereinigung, Einschließen, Zählen, EscapeHTML, UnescapeHTML, Einfügen, Spleißen, StartsWith, EndesWith, Überschriften, Trimmen, Beschneiden usw.

Beachten Sie, dass Underscore.string von Underscore.js beeinflusst wird, aber auch ohne verwendet werden kann.

Last not Least: Mit der JavaScript-Version von ES6 wird eine integrierte include-Methode geliefert:

'foobar'.includes('ob');
// → true

Die meisten modernen Browser unterstützen dies bereits, haben die ES6-Kompatibilitätstabelle im Blick.







Sie suchten nach .indexOf String.prototype.indexOf .

indexOf gibt einen Index an den übereinstimmenden Teilstring zurück. Der Index korreliert mit dem Beginn der Teilzeichenfolge. Wenn es keine Übereinstimmung gibt, wird -1 zurückgegeben. Hier ist eine einfache Demo dieses Konzepts:

var str = "Hello World"; // For example, lets search this string,
var term = "World"; // for the term "World",
var index = str.indexOf(term); // and get its index.
if (index != -1) { // If the index is not -1 then the term was matched in the string,
  alert(index); // and we can do some work based on that logic. (6 is alerted)
}




Das hat einfach für mich funktioniert. Es wird für Zeichenfolgen ausgewählt, die nicht den Begriff "Gelöscht:" enthalten.

if (eventString.indexOf("Deleted:") == -1)



Es gibt eine schlanke und bessere Möglichkeit, dies zu tun, und es wird der Operator (BitWise NOT) verwendet.

if(~"John".indexOf("J")) {
  alert("Found")
}
else {
  alert("Not Found");
}

Das Bitwise Not konvertiert "x" in - (x + 1). Wenn das x aus der Methode indexOf -1 ergibt, wird es in - (-1 + 1) = -0 konvertiert, was ein falscher Wert ist.




Beispiel

var a  = "Test String";

if(a.search("ring")!=-1){
     //exist 
} else {
     //not found 
}






So sammeln Sie gültige Lösungen:

var stringVariable = "some text";
var findString = "text";

//using `indexOf()`
var containResult1 = stringVariable.indexOf(findString) != -1;
document.write(containResult1+', ');

//using `lastIndexOf()`
var containResult2 = stringVariable.lastIndexOf(findString) != -1;
document.write(containResult2+', ');

//using `search()`
var containResult3 = stringVariable.search(findString) != -1;
document.write(containResult3+', ');
     
//using `split()`
var containResult4 = stringVariable.split(findString)[0] != stringVariable;
document.write(containResult4+'');




JavaScript

 var str = "My big string contain apples and oranges";
 var n = str.indexOf("apples"); 
 alert(n); //will alert 22, -1 if not found

jQuery

  <p>My big string contain apples and oranges</p>
  alert($("p:contains(apples)")[0] != undefined); //will alert true if found



Verwenden Sie das eingebaute und das einfachste, dh match() für den String. Um das zu erreichen, worauf Sie sich freuen, tun Sie dies:

var stringData ="anyString Data";

var subStringToSearch = "any";

// This will give back the substring if matches and if not returns null
var doesContains = stringData.match(subStringToSearch);

if(doesContains !=null) {
    alert("Contains Substring");
}





Related