Bei der Arbeit mit dem String-Typ sind „startsWith(anotherString)“ und „endsWith(anotherString)“ sehr nützliche Methoden. Unter diesen bestimmt „startsWith“, ob die aktuelle Zeichenfolge mit „anotherString“ beginnt, und „endsWith“ bestimmt, ob sie endet. Beispiel:
"abcd".startsWith("ab"); // true "abcd".startsWith("bc"); // false "abcd".endsWith("cd"); // true "abcd".endsWith("e"); // false "a".startsWith("a"); // true "a".endsWith("a"); // true
Diese beiden Methoden sind in Javascript leider nicht enthalten, Sie können sie also nur bei Bedarf selbst schreiben. Natürlich ist es nicht schwer zu schreiben.
if (typeof String.prototype.startsWith != 'function') { String.prototype.startsWith = function (prefix){ return this.slice(0, prefix.length) === prefix; }; }
String.slice() ähnelt String.substring() darin, dass beide einen Teilstring erhalten, einige Rezensionen sagen jedoch, dass Slice effizienter ist. Der Grund, warum indexOf() hier nicht verwendet wird, ist, dass indexOf die gesamte Zeichenfolge scannt. Wenn die Zeichenfolge sehr lang ist, ist die Effizienz von indexOf sehr schlecht.
if (typeof String.prototype.endsWith != 'function') { String.prototype.endsWith = function(suffix) { return this.indexOf(suffix, this.length - suffix.length) !== -1; }; }
Im Gegensatz zu „startsWith“ kann indexOf in „endsWith“ verwendet werden. Der Grund dafür ist, dass nur die letzte Zeichenfolge gescannt wird. Der Vorteil gegenüber Slice besteht darin, dass die Zeichenfolge nicht kopiert werden muss, sondern nur direkt gescannt werden muss, sodass die Effizienz effizienter ist.