Quelle est la différence entre
alert("abc".substr(0,2));
et
alert("abc".substring(0,2));
Ils semblent tous deux produire "ab".
La différence est dans le deuxième argument. Le deuxième argument de substring
– substring
est l'index pour arrêter (mais pas inclure), mais le second argument sur substr
est la longueur maximale à renvoyer.
Des liens?
https://developer.mozilla.org/fr/JavaScript/Reference/Global_Objects/String/substr
https://developer.mozilla.org/fr/JavaScript/Reference/Global_Objects/String/substring
substr
( MDN ) prend les paramètres comme (from, length)
.
substring
( MDN ) prend les paramètres comme (from, to)
.
alert("abc".substr(1,2)); // returns "bc" alert("abc".substring(1,2)); // returns "b"
Vous pouvez vous rappeler que la substring
prend des indices, tout comme une autre méthode d'extraction de chaîne, une tranche .
À partir de 0, vous pouvez utiliser l'une ou l'autre méthode.
Un autre getcha que j'ai récemment rencontré est que dans IE 8, "abcd".substr(-1)
renvoie à tort "abcd"
, tandis que Firefox 3.6 renvoie "d"
comme il se doit. slice
fonctionne correctement sur les deux.
Vous trouverez plus d'informations sur ce sujet ici .
Comme indiqué dans la réponse de yatima2975, il y a une différence supplémentaire:
substr()
accepte une position de départ négative en tant que décalage à partir de la fin de la chaîne. substring()
ne fonctionne pas.
De MDN :
Si le début est négatif, substr () l'utilise comme un index de caractère à partir de la fin de la chaîne.
Pour résumer les différences fonctionnelles:
substring(begin-offset, end-offset-exclusive)
où début-décalage est 0
ou plus
substr(begin-offset, length)
où le décalage peut également être négatif
La différence est le deuxième paramètre. Leurs deuxièmes paramètres, alors que les deux nombres, attendent deux choses différentes:
Lors de l'utilisation de la sous-chaîne, le deuxième paramètre est le premier index à ne pas inclure:
var s = "string"; s.substring(1, 3); // would return 'tr' var s = "another example"; s.substring(3, 7); // would return 'ther'
Lors de l'utilisation du substr, le deuxième paramètre est le nombre de caractères à inclure dans la sous-chaîne:
var s = "string"; s.substr(1, 3); // would return 'tri' var s = "another example"; s.substr(3, 7); // would return 'ther ex'
Slice vs Substr vs Substring vs [] Méthodes
Il existe des avantages pour la performance de chacune de ces méthodes javascript. Utilisez ces fonctions en conséquence.
La principale différence est que
Substr () vous permet de spécifier la longueur maximale à retourner
La sous-chaîne () vous permet de spécifier les indices et le second argument n'est PAS inclus
Il existe des subtilités supplémentaires entre substr () et substring () telles que la gestion des arguments égaux et des arguments négatifs. Notez également que la sous-chaîne () et la tranche () sont similaires, mais pas toujours les mêmes.
length vs indices "string".substr(2,4); // "ring" (start, length) length is the maximum length to return "string".substring(2,4); // "ri" (start, end) indices / second value is NOT inclusive "string".slice(2,4); // "ri" (start, end) indices / second value is NOT inclusive watch out for substring swap "string".substr(3,2); // "in" "string".substring(3,2); // "r" (swaps the larger and the smaller number) "string".slice(3,2); // "" (just returns "") handling negative arguments "string".substr(2,-4); // "" "string".substring(2,-4); // "st" (converts negative numbers to 0, then swaps first and second position) "string".slice(2,-4); // ""
La grande différence est que substr()
est une méthode obsolète qui peut encore être utilisée, mais doit être utilisée avec précaution car elle devrait être supprimée à l'avenir. Vous devriez travailler pour supprimer leur utilisation de votre code. Et la méthode substring()
réussi et spécifié l'ancienne.