Was ist der einfachste Weg, um herauszufinden, ob eine Zeichenfolge mit einem bestimmten Wert endet?
javascript
jquery
Jon Erickson
quelle
quelle
Antworten:
Sie könnten Regexps wie folgt verwenden:
str.match(/value$/)
Dies würde true zurückgeben, wenn der String am Ende 'value' ($) hat.
quelle
Von Prototypen gestohlen:
String.prototype.endsWith = function(pattern) { var d = this.length - pattern.length; return d >= 0 && this.lastIndexOf(pattern) === d; }; 'slaughter'.endsWith('laughter'); // -> true
quelle
Reguläre Ausdrücke
"Hello world".match(/world$/)
quelle
Ich hatte kein Glück mit dem Match-Ansatz, aber das hat funktioniert:
Wenn Sie die Zeichenfolge haben, "Dies ist meine Zeichenfolge." und wollte sehen, ob es mit einem Punkt endet, tun Sie dies:
var myString = "This is my string."; var stringCheck = "."; var foundIt = (myString.lastIndexOf(stringCheck) === myString.length - stringCheck.length) > 0; alert(foundIt);
Sie können die Variable stringCheck so ändern, dass sie eine beliebige Zeichenfolge ist, nach der gesucht werden soll. Besser noch wäre es, dies in deine eigene Funktion wie folgt zu werfen:
function DoesStringEndWith(myString, stringCheck) { var foundIt = (myString.lastIndexOf(stringCheck) === myString.length - stringCheck.length) > 0; return foundIt; }
quelle
Das kannst du machen
'hello world'.slice(-5)==='world'
. Funktioniert in allen Browsern. Viel schneller als Regex.quelle
ES6 unterstützt dies direkt:
'this is dog'.endsWith('dog') //true
quelle
Ich erweitere nur das, was @ luca-matteis gepostet hat, aber um die in den Kommentaren genannten Probleme zu lösen, sollte der Code umbrochen werden, um sicherzustellen, dass Sie eine native Implementierung nicht überschreiben.
if ( !String.prototype.endsWith ) { String.prototype.endsWith = function(pattern) { var d = this.length - pattern.length; return d >= 0 && this.lastIndexOf(pattern) === d; }; }
Dies ist die vorgeschlagene Methode für die Methode Array.prototype.forEach, auf die im Mozilla-Entwicklernetzwerk hingewiesen wird
quelle
Sie können jederzeit einen Prototyp einer String-Klasse erstellen. Dies funktioniert:
String.prototype.endsWith = function (str) {return (this.match (str + "$") == str)}
Weitere verwandte Erweiterungen für die String-Klasse finden Sie unter http://www.tek-tips.com/faqs.cfm?fid=6620
quelle
match
ein Array zurückgegeben wird. Es müsste seinthis.match(str+"$")[0]===str
(und das könnte scheitern, wennmatch
nichts gefunden wird - habe diesen nicht falsch getestet).