web-dev-qa-db-fra.com

Quelle est la difference 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”.

792
Difference Engine

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

Liens?

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

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

879
Delan Azabani

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 substring prend des index, tout comme une autre méthode d'extraction de chaîne, slice .

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

293
Colin Hebert

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

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

De MDN :

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

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

substring(begin-offset, end-offset-exclusive) où begin-offset est 0 ou supérieur

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

33
JefferMC

Un autre piège que j'ai récemment rencontré est que, dans IE 8, "abcd".substr(-1) renvoie par erreur "abcd", alors que Firefox 3.6 renvoie "d" comme il se doit. slice fonctionne correctement sur les deux.

Plus sur ce sujet peut être trouvé ici .

25
yatima2975

La principale différence est que

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

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

Il y a quelques subtilités supplémentaires entre substr () et substring () telles que le traitement des arguments égaux et des arguments négatifs. Notez également que substring () et slice () sont similaires mais pas toujours identiques.

  //*** length vs indices:
    "string".substring(2,4);  // "ri"   (start, end) indices / second value is NOT inclusive
    "string".substr(2,4);     // "ring" (start, length) length is the maximum length to return
    "string".slice(2,4);      // "ri"   (start, end) indices / second value is NOT inclusive

  //*** watch out for substring swap:
    "string".substring(3,2);  // "r"    (swaps the larger and the smaller number)
    "string".substr(3,2);     // "in"
    "string".slice(3,2);      // ""     (just returns "")

  //*** negative second argument:
    "string".substring(2,-4); // "st"   (converts negative numbers to 0, then swaps first and second position)
    "string".substr(2,-4);    // ""
    "string".slice(2,-4);     // ""

  //*** negative first argument:
    "string".substring(-3);   // "string"        
    "string".substr(-3);      // "ing"  (read from end of string)
    "string".slice(-3);       // "ing"        
12
Nate Lipp

La différence est le deuxième paramètre. Leurs deuxièmes paramètres, alors que les deux nombres, s’attendent à deux choses différentes:

Lorsque vous utilisez une 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 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
CurnalCurz

substring (): Il a 2 paramètres "début" et "fin".

  • Le paramètre start est requis et spécifie la position où commencer l'extraction.
  • Le paramètre fin est facultatif et spécifie la position où l'extraction doit se terminer.

Si le paramètre de fin n'est pas spécifié, tous les caractères de la position de début jusqu'à la fin de la chaîne sont extraits.

var str = "Substring Example";
var result = str.substring(0, 10);
alert(result);

Output : Substring

Si la valeur du paramètre de début est supérieure à la valeur du paramètre de fin, cette méthode échangera les deux arguments. Cela signifie que début sera utilisé en tant que fin et que fin sera utilisé en tant que début.

var str = "Substring Example";
var result = str.substring(10, 0);
alert(result);

Output : Substring

substr (): Il a 2 paramètres "start" et "count".

  • le paramètre start est requis et spécifie la position où commencer l'extraction.

  • le paramètre count est facultatif et spécifie le nombre de caractères à extraire.

var str = "Substr Example";
var result = str.substr(0, 10);
alert(result);


Output : Substr Exa

Si le paramètre count n'est pas spécifié, tous les caractères de la position de début jusqu'à la fin de la chaîne sont extraits. Si count est égal à 0 ou négatif, une chaîne vide est renvoyée.

var str = "Substr Example";
var result = str.substr(11);
alert(result);

Output : ple
4
raju poloju

Méthodes Slice vs Substr vs Substring vs []

Il existe des avantages en termes de performances pour chacune de ces méthodes javascript. Veuillez utiliser ces fonctions en conséquence.

4
Ali007

La grande différence est que substr() est une méthode dépréciée qui peut toujours être utilisée, mais doit être utilisée avec prudence, car elles sont devrait être entièrement supprimé dans le futur. Vous devriez travailler pour supprimer leur utilisation de votre code. Et la méthode substring() a réussi et a spécifié la méthode précédente.

2
5ervant

sous-chaîne (startIndex, endIndex (non inclus))

substr (startIndex, combien de caractères)

const string = 'JavaScript';

console.log('substring(1,2)', string.substring(1,2)); // a
console.log('substr(1,2)', string.substr(1,2)); // av
0
Sajith Mantharath