1159 votes

Quelle est la différence entre la Chaîne.tranche et de la Corde.sous-chaîne?

Personne ne sait quelle est la différence entre ces deux méthodes:

String.slice
String.substring

1158voto

Daniel Vassallo Points 142049

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():

  1. Si start équivaut stop, elle renvoie une chaîne vide.
  2. Si stop est omis, il extrait les caractères à la fin de la chaîne.
  3. Si start > stop, alors substring swap de ces 2 arguments.
  4. Si l'argument est plus grand que la longueur de la chaîne, que ce soit l'argument utilisera la longueur de la chaîne.
  5. Si l'argument est moins de 0 ou est - NaN,, elle est traitée comme si elle était 0.

Notes sur l' slice():

  1. Si start équivaut stop, elle renvoie une chaîne vide, exactement comme substring().
  2. Si stop est omis, slice extraits de caractères à la fin de la chaîne, exactement comme substring().
  3. Si start > stop, slice() sera PAS intervertir les 2 arguments.
  4. Si l'argument est plus grand que la longueur de la chaîne, que ce soit l'argument utilisera la longueur de la chaîne, exactement comme substring().
    • Si 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.
    • Si 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()

17voto

Gerard ONeill Points 319

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.com

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.

Powered by:

X