Personne ne sait quelle est la différence entre ces deux méthodes:
String.slice
String.substring
Personne ne sait quelle est la différence entre ces deux méthodes:
String.slice
String.substring
slice()
fonctionne comme substring()
avec un peu de comportements différents.
Syntax: string.slice(start, stop);
Syntax: string.substring(start, stop);
Notes sur l' substring()
:
start
équivaut stop
, elle renvoie une chaîne vide.stop
est omis, il extrait les caractères à la fin de la chaîne.start > stop
, alors substring
swap de ces 2 arguments.0
ou est - NaN
,, elle est traitée comme si elle était 0
.Notes sur l' slice()
:
start
équivaut stop
, elle renvoie une chaîne vide, exactement comme substring()
.stop
est omis, slice
extraits de caractères à la fin de la chaîne, exactement comme substring()
.start > stop
, slice()
sera PAS intervertir les 2 arguments.substring()
.start
est négatif, slice()
sera mis en caractères à partir de la fin de la chaîne, exactement comme substr()
dans Firefox. Ce comportement est observé dans IE et Firefox.stop
est négatif, slice()
sera mis en stop: (string.length – 1) – Math.abs(stop)
(valeur d'origine).Source: Rudimentaire, l'Art de la Programmation Et du Développement: Javascript: substr() c. s. substring()
La réponse est bien, mais nécessite un peu de lecture. Surtout avec la nouvelle terminologie "stop".
Mon Aller-organisée par les différences de le rendre utile, en plus de la première réponse de Daniel ci-dessus:
1) des index négatifs. Sous-chaîne nécessite positive des indices, et permettra de définir un indice négatif à 0. La tranche nagative de l'indice moyen de la position à partir de la fin de la chaîne.
"1234".substring(-2, -1) == "1234".substring(0,0) == ""
"1234".slice(-2, -1) == "1234".slice(2, 3) == "3"
2) Swaping de l'index. Sous-chaîne va réorganiser les indices de faire le premier indice est inférieure ou égale à la deuxième indice.
"1234".substring(3,2) == "1234".substring(2,3) == "3"
"1234".slice(3,2) == ""
Commentaire général -- je trouve ça bizarre que le second indice est la position après le dernier caractère de la tranche ou la sous-chaîne. Je m'attends à "1234".tranche(2,2) pour revenir à "3". Cela rend Andy confusion au-dessus justifiée-je en droit d'attendre "1234".tranche(2, -1) return "34". Oui, cela signifie que je suis nouveau sur le Javascript. Cela signifie également ce problème:
"1234".slice(-2, -2) == "", "1234".slice(-2, -1) == "3", "1234".slice(-2, -0) == "" <-- you have to use length or omit the argument to get the 4.
"1234".slice(3, -2) == "", "1234".slice(3, -1) == "", "1234".slice(3, -0) == "" <-- same issue, but seems weirder.
Mon 2c.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.