Est-ce que quelqu'un sait quelle est la différence entre ces deux méthodes:
String.protorype.slice
String.protorype.substring
slice()
fonctionne comme substring()
avec quelques comportements différents.
Syntax: string.slice(start, stop);
Syntax: string.substring(start, stop);
Ce qu'ils ont en commun:
start
est égal à stop
: renvoie une chaîne videstop
est omis: extrait les caractères jusqu'à la fin de la chaîneDistinctions desubstring()
:
start > stop
, alors substring
échangera ces 2 arguments.NaN
, il est traité comme s'il s'agissait de 0
.Distinctions deslice()
:
start > stop
, slice()
retournera la chaîne vide. (""
)start
est négatif: définit le caractère à partir de la fin de la chaîne, exactement comme substr()
dans Firefox. Ce comportement est observé dans Firefox et IE.stop
est négatif: définit stop à: string.length – Math.abs(stop)
(valeur d'origine), sauf la limite à 0 (donc, Math.max(0, string.length + stop)
) comme indiqué dans spécification ECMA .Source: Art rudimentaire de la programmation et du développement: Javascript: substr () v.s. sous-chaîne ()
Ben Nadel a écrit un bon article à ce sujet, il souligne la différence entre les paramètres et les fonctions suivantes:
String.slice( begin [, end ] )
String.substring( from [, to ] )
String.substr( start [, length ] )
Il souligne également que si les paramètres à découper sont négatifs, ils référencent la chaîne à partir de la fin. La sous-chaîne et la sous-chaîne ne le sont pas.
Voici son article à ce sujet http://www.bennadel.com/blog/2159-using-slice-substring-and-substr-in-javascript.htm
La réponse est bonne mais nécessite une lecture un peu plus approfondie. Surtout avec la nouvelle terminologie "stop".
My Go - organisé par différences pour le rendre utile en plus de la première réponse de Daniel ci-dessus:
1) indices négatifs. La sous-chaîne nécessite des index positifs et définit un index négatif sur 0. L'indice négatif de Slice indique la position à partir de la fin de la chaîne.
"1234".substring(-2, -1) == "1234".substring(0,0) == ""
"1234".slice(-2, -1) == "1234".slice(2, 3) == "3"
2) échange d'index. La sous-chaîne va réorganiser les index pour rendre le premier index inférieur ou égal au second index.
"1234".substring(3,2) == "1234".substring(2,3) == "3"
"1234".slice(3,2) == ""
Commentaire général - Je trouve étrange que le deuxième index soit la position après le dernier caractère de la tranche ou de la sous-chaîne. Je m'attendrais à ce que "1234" .slice (2,2) renvoie "3". Cela rend la confusion d'Andy justifiée ci-dessus - je m'attendrais à ce que "1234" .slice (2, -1) renvoie "34". Oui, cela signifie que je suis nouveau sur Javascript. Cela signifie aussi ce comportement:
"1234".slice(-2, -2) == "", "1234".slice(-2, -1) == "3", "1234".slice(-2, -0) == "" <-- you have to use length or omit the argument to get the 4.
"1234".slice(3, -2) == "", "1234".slice(3, -1) == "", "1234".slice(3, -0) == "" <-- same issue, but seems weirder.
Mon 2c.
La différence entre la sous-chaîne et la tranche - est la façon dont ils travaillent avec des arguments négatifs et des lignes négligées à l'étranger:
sous-chaîne (début, fin)
Les arguments négatifs sont interprétés comme zéro. Les valeurs trop grandes sont tronquées à la longueur de la chaîne: alert ("testme" .substring (-2)); // "testme", -2 devient 0
De plus, si début> fin, les arguments sont interchangés, c'est-à-dire que la ligne de tracé retourne entre le début et la fin:
alert ( "testme" .substring (4, -1)); // "test"
// -1 Becomes 0 -> got substring (4, 0)
// 4> 0, so that the arguments are swapped -> substring (0, 4) = "test"
tranche
Les valeurs négatives sont mesurées à partir de la fin de la ligne:
alert ( "testme" .slice (-2)); // "me", from the end position 2
alert ( "testme" .slice (1, -1)); // "estm", from the first position to the one at the end.
C'est beaucoup plus pratique que l'étrange sous-chaîne logique.
Une valeur négative du premier paramètre sur substr supporté par tous les navigateurs sauf IE8-.
Si le choix de l'une de ces trois méthodes, pour une utilisation dans la plupart des situations - ce seraslice: arguments négatifs et il maintient et opère le plus évident.
La seule différence entre la méthode slice et la méthode sous-chaîne réside dans les arguments
Les deux prennent deux arguments, par exemple début/de et fin/à.
Vous ne pouvez pas passer une valeur négative en tant que premier argument de la méthode substring mais à la méthode slice de la parcourir de la fin.
Détails de l'argument de la méthode Slice:
REF: http://www.thesstech.com/javascript/string_slice_method
Arguments
start_index Index à partir duquel la tranche doit commencer. Si la valeur est fournie en négatif, cela signifie qu'il faut commencer par le dernier. par exemple. -1 pour le dernier caractère .end_index Index après la fin de la tranche. Si non fourni, la tranche sera prise de start_index à la fin de la chaîne. En cas de valeur négative, l'indice sera mesuré à partir de la fin de la chaîne.
Détails des arguments de la méthode de sous-chaîne:
REF: http://www.thesstech.com/javascript/string_substring_method
Arguments
de Il doit s'agir d'un entier non négatif pour spécifier l'index à partir duquel la sous-chaîne doit commencer .à Un entier non négatif facultatif permettant de fournir un index avant la chaîne suivante devrait être fini.
Pour slice (start, stop), si stop est négatif, stop sera défini sur: string.length - Math.abs (stop), plutôt (string.length - 1) - Math.abs (arrêt).
substr: Cela nous permet d'extraire une partie de la chaîne en fonction de l'index spécifié. la syntaxe de substr- string.substr (début, fin) début - index début indique le début de la récupération. end-end index indique jusqu'à où la chaîne va chercher. C'est optionnel.
slice: Il permet d'extraire une partie de la chaîne en fonction de l'index spécifié. Cela nous permet de spécifier positif et index. syntaxe de slice - string.slice (début, fin) start - index index indique où le début de la récupération est effectué. L 'index end - end indique jusqu'à où la chaîne récupère. C'est optionnel. Dans 'splice', les index de début et de fin aident à prendre un index positif et un index négatif.
exemple de code pour 'slice' dans la chaîne
var str="Javatscript";
console.log(str.slice(-5,-1));
output: crip
exemple de code pour 'sous-chaîne' dans la chaîne
var str="Javatscript";
console.log(str.substring(1,5));
output: avat
[* Remarque: l'indexation négative commence à la fin de la chaîne.]