Ich möchte wissen, ob eine Zeichenfolge mit dem angegebenen Zeichen / der angegebenen Zeichenfolge beginnt oder in jQuery damit endet.
Beispielsweise:
var str = 'Hello World';
if( str starts with 'Hello' ) {
alert('true');
} else {
alert('false');
}
if( str ends with 'World' ) {
alert('true');
} else {
alert('false');
}
Wenn es keine Funktion gibt, dann eine Alternative?
javascript
jquery
string
Naveed
quelle
quelle
Antworten:
Eine Möglichkeit besteht darin, reguläre Ausdrücke zu verwenden:
quelle
str.match(/^Hello/)
Aber das Formular/regex/.test(str)
ist für diesen speziellen Fall noch besser, laut stackoverflow.com/questions/10940137/…var isUnavailable = $("#StatusId option:selected").text().match("^Unavailable - ");
- Warum wird null zurückgegeben, wenn die ausgewählte Option "Nicht verfügbar - Andere" lautet?Für den Start können Sie indexOf verwenden:
...
ref
und Sie können die Mathematik basierend auf der Zeichenfolgenlänge durchführen, um 'Endswith' zu bestimmen.
quelle
lastIndexOf()
für die Endswith verwenden;)("1234".lastIndexOf('Hello') == "1234".length - 'Hello'.length)
führt zu wahr.Dazu ist jQuery nicht erforderlich. Sie könnten einen jQuery-Wrapper codieren, aber er wäre nutzlos, sodass Sie ihn besser verwenden sollten
da die match () -Methode veraltet ist.
PS: Das "i" -Flag in RegExp ist optional und steht für Groß- und Kleinschreibung wird nicht berücksichtigt (daher wird es auch für "Hallo", "Hallo" usw. als "Wahr" zurückgegeben).
quelle
Sie benötigen jQuery für solche Aufgaben nicht wirklich. In der ES6-Spezifikation haben sie bereits sofort einsatzbereite Methoden Start mit und Ende mit .
Derzeit in FF und Chrome verfügbar . Für alte Browser können Sie deren Polyfills oder Substr verwenden
quelle
Sie können den
String
Prototyp jederzeit wie folgt erweitern:Und benutze es so:
quelle
ES6 unterstützt jetzt die Methode
startsWith()
undendsWith()
zum Überprüfen von Anfang und Ende vonstring
s. Wenn Sie Pre-Es6-Engines unterstützen möchten, sollten Sie demString
Prototyp eine der vorgeschlagenen Methoden hinzufügen .quelle
()[].
) maskiert werden müssen, unterbricht Ihre Polyfill-Methoden. Sie müssen die Zeichenfolgen mit einer Regex-Escape-Funktion vorbereiten. Oder noch besser: Verwenden Sie eine kampferprobte Polyfüllung voncore-js