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 deux produire "ab".

    La différence est dans le deuxième argument. Le deuxième argument de substringsubstring 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.