Question Quelle est la différence entre substr et substring?


Quelle est la différence entre

alert("abc".substr(0,2));

et

alert("abc".substring(0,2));

Ils semblent tous les deux produire "ab".


699
2017-09-19 11:40


origine


Réponses:


La différence est dans le deuxième argument. Le deuxième argument à substring est l'index à arrêter à (mais ne pas inclure), mais le deuxième argument à substr est la longueur maximale à retourner.

Liens?

https://developer.mozilla.org/fr/JavaScript/Reference/Global_Objects/String/substr

https://developer.mozilla.org/fr/JavaScript/Reference/Global_Objects/String/substring


773
2017-09-19 11:41



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"

Tu peux te souvenir substring prend des indices, comme le fait encore une autre méthode d'extraction de chaîne, tranche.

En partant de 0, vous pouvez utiliser l'une ou l'autre méthode.


254
2017-09-19 11:42



Comme l'indique la réponse de yatima2975, il existe une différence supplémentaire:

substr() accepte une position de départ négative en tant que décalage par rapport à la fin de la chaîne. substring() ne fait pas.

De MDN:

Si start est négatif, substr () l'utilise comme index de caractère depuis le   fin de la chaîne.

Donc, pour résumer les différences fonctionnelles:

substring(begin-offset, end-offset-exclusive) où début-décalage est 0 ou plus grand

substr(begin-offset, length) où begin-offset peut aussi être négatif


25
2018-02-09 19:51



Un autre gotcha que je suis récemment tombé est que dans IE 8, "abcd".substr(-1) retourne par erreur "abcd", alors que Firefox 3.6 revient "d" Comme il se doit. slice fonctionne correctement sur les deux.

Plus sur ce sujet peut être trouvé ici.


22
2018-06-01 14:16



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 à 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 de substr, le second 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'

7
2018-03-04 15:22



La principale différence est que

substr () vous permet de spécifier la longueur maximale à retourner

substring () vous permet de spécifier les indices et le second argument n'est PAS inclusif

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 substring () et slice () 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);     // ""

7
2018-03-09 02:29



Slice vs Substr vs Substring vs [] Méthodes

Il y a des avantages de performance à chacune de ces méthodes javascript. Veuillez utiliser ces fonctions en conséquence.


4
2017-10-21 01:04



La grande différence est, substr() est une méthode obsolète cela peut toujours être utilisé, mais doit être utilisé avec précaution car on s'attend à ce qu'ils soient supprimés complètement dans le futur. Vous devriez travailler pour enlever leur utilisation de votre code. Et le substring() méthode a réussi et a spécifié l'ancien.


-6
2017-08-20 14:26