Quelle est la différence entre
alert("abc".substr(0,2));
et
alert("abc".substring(0,2));
Ils semblent tous les deux afficher «ab».
javascript
substring
Moteur de différence
la source
la source
substring
surpasse tous les autres sur Chrome ces derniers temps.slice
méthode,substring
ne gère pas l'ajustement des paramètres négatifs.substr
méthode et unesubstring
méthode"? C'est vraiment la méthode préférée de surcharge?substr()
ce que vous pourriez appeler "pseudo-obsolète" en haut de la page des documents ici: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… - Quelqu'un a-t-il plus d'informations à ce sujet, par exemple, y a-t-il un navigateur qui prévoit de dépréciersubstr()
à tout moment dans le futur? Ou, comme l'a suggéré Steven Lu, pourrait-il y avoir des inconvénients en termes de performances à l'substr()
avenir?Réponses:
La différence réside dans le deuxième argument. Le deuxième argument de
substring
est l'indice auquel s'arrêter (mais ne pas inclure), mais le deuxième argument desubstr
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
la source
String.prototype.substr()
est déconseillée ... (Elle est définie à l' annexe B de la norme ECMA-262, dont l' introduction indique: "... Les programmeurs ne existence de ces caractéristiques et comportements lors de l'écriture de nouveau code ECMAScript.… ")substring
( MDN ) prend les paramètres en tant que(from, to)
.substr
( MDN ) prend les paramètres en tant que(from, length)
.Mise à jour : MDN prend en compte l'
substr
héritage.Vous vous souvenez des
substring
prises d'indices, tout comme une autre méthode d'extraction de chaînes, slice .En partant de 0, vous pouvez utiliser l'une ou l'autre méthode.
la source
.substring()
prend des indices. Vous vous en souvenez parce que c'est le seul avec un «i» dans le nom..slice()
prend aussi des indices.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()
ne fait pas.De MDN :
Donc, pour résumer les différences fonctionnelles:
substring(begin-offset, end-offset-exclusive)
où l'offset de début est0
ou supérieursubstr(begin-offset, length)
où le début-décalage peut également être négatifla source
Un autre problème que j'ai récemment rencontré est que dans IE 8,
"abcd".substr(-1)
renvoie par erreur"abcd"
, tandis que Firefox 3.6 retourne"d"
comme il se doit.slice
fonctionne correctement sur les deux.Plus d'informations sur ce sujet peuvent être trouvées ici .
la source
La principale différence est que
substr () vous permet de spécifier la longueur maximale à renvoyer
substring () vous permet de spécifier les indices et le deuxième argument n'est PAS inclusif
Il existe quelques subtilités supplémentaires entre substr () et substring () telles que la gestion des arguments égaux et des arguments négatifs. Notez également que substring () et slice () sont similaires mais pas toujours identiques.
la source
slice
:"string".slice(2,-2); // "ri"
La différence est le deuxième paramètre. Leurs deuxièmes paramètres, bien que les deux nombres, attendent deux choses différentes:
Lorsque vous utilisez une sous-chaîne, le deuxième paramètre est le premier index à ne pas inclure:
Lors de l'utilisation de substr, le deuxième paramètre est le nombre de caractères à inclure dans la sous-chaîne:
la source
La grande différence est qu'il
substr()
s'agit d' une méthode obsolète qui peut toujours être utilisée, mais qui doit être utilisée avec prudence car elle devrait être supprimée entièrement à l'avenir. Vous devez travailler pour supprimer leur utilisation de votre code. Et lasubstring()
méthode a réussi et a précisé la première.la source
substr()
? Je l'ai lu de plusieurs personnes, mais je ne trouve aucune information sur le Web qui soutienne la déclaration. De plus, Mozilla ne l'inclut pas dans la liste des fonctionnalités obsolètes / obsolètes: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…String.prototype.substr()
est défini dans l' annexe B de la norme ECMA-262, dont l' introduction stipule: "… Les programmeurs ne doivent pas utiliser ou supposer l'existence de ces fonctionnalités et comportements lors de l'écriture de nouveau code ECMAScript.…"substr()
est vraiment noté comme obsolète sur certains documents.Méthodes Slice vs Substr vs Substring vs []
Chacune de ces méthodes javascript présente des avantages en termes de performances. Veuillez utiliser ces fonctions en conséquence.
la source
substring (): Il a 2 paramètres "start" et "end".
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.
Si la valeur du paramètre de début est supérieure à la valeur du paramètre de fin, cette méthode permute les deux arguments. Cela signifie que start sera utilisé comme end et end sera utilisé comme start.
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.
Si le paramètre count n'est pas spécifié, tous les caractères depuis la position de départ jusqu'à la fin de la chaîne sont extraits. Si count est 0 ou négatif, une chaîne vide est retournée.
la source
sous-chaîne (startIndex, endIndex (non inclus))
substr (startIndex, combien de caractères)
la source