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 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
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.
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
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 .
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"
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'
substring (): Il a 2 paramètres "début" et "fin".
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
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.
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.
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