Lorsque vous travaillez sur le type String, StartWith(anotherString) et EndsWith(anotherString) sont des méthodes très utiles. Parmi eux, startWith détermine si la chaîne actuelle commence par anotherString et endWith détermine si elle se termine. Exemple :
"abcd".startsWith("ab"); // true "abcd".startsWith("bc"); // false "abcd".endsWith("cd"); // true "abcd".endsWith("e"); // false "a".startsWith("a"); // true "a".endsWith("a"); // true
Malheureusement, Javascript n'est pas fourni avec ces deux méthodes, vous ne pouvez donc les écrire vous-même que si nécessaire. Bien sûr, ce n’est pas difficile à écrire.
if (typeof String.prototype.startsWith != 'function') { String.prototype.startsWith = function (prefix){ return this.slice(0, prefix.length) === prefix; }; }
String.slice() est similaire à String.substring() dans le sens où ils obtiennent tous deux une sous-chaîne, mais certaines critiques disent que slice est plus efficace. La raison pour laquelle indexOf() n'est pas utilisé ici est que indexOf analysera la chaîne entière. Si la chaîne est très longue, l'efficacité de indexOf sera très mauvaise.
if (typeof String.prototype.endsWith != 'function') { String.prototype.endsWith = function(suffix) { return this.indexOf(suffix, this.length - suffix.length) !== -1; }; }
Contrairement à StartWith, indexOf peut être utilisé dans EndsWith. La raison en est qu'il analyse uniquement la dernière chaîne, et l'avantage par rapport à slice est qu'il n'a pas besoin de copier la chaîne, il suffit de la scanner directement, ce qui la rend plus efficace.