Was ist der Unterschied zwischen
alert("abc".substr(0,2));
und
alert("abc".substring(0,2));
Beide scheinen "ab" auszugeben.
javascript
substring
Differenz-Engine
quelle
quelle
substring
alle anderen in Chrome in letzter Zeit übertroffen werden .slice
Methode wirdsubstring
die Anpassung für negative Parameter nicht durchgeführt.substr
Methode als auch einesubstring
Methode?" Dies ist wirklich die bevorzugte Methode zum Überladen?substr()
, was Sie als "pseudo-veraltet" bezeichnen könnten, oben auf der Dokumentseite hier: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… - Hat jemand mehr Informationen dazu, z. B. gibt es einen Browser, der plant,substr()
zu einem späteren Zeitpunkt tatsächlich zu veralten ? Oder, wie Steven Lu vorschlug, könnte die zukünftige Verwendung Leistungsnachteile habensubstr()
?Antworten:
Der Unterschied liegt im zweiten Argument. Das zweite Argument
substring
ist der Index, bei dem angehalten werden soll (aber nicht eingeschlossen werden soll), aber das zweite Argumentsubstr
ist die maximale Länge, die zurückgegeben werden soll.Links?
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring
quelle
String.prototype.substr()
die veraltete Antwort enthält ... (Sie ist in Anhang B des ECMA-262-Standards definiert, dessen Einführung besagt: "... Programmierer sollten die nicht verwenden oder annehmen Vorhandensein dieser Funktionen und Verhaltensweisen beim Schreiben eines neuen ECMAScript-Codes.… ")substring
( MDN ) nimmt Parameter als(from, to)
.substr
( MDN ) nimmt Parameter als(from, length)
.Update : MDN berücksichtigt
substr
Legacy.Sie können sich daran erinnern, dass
substring
Indizes verwendet werden, ebenso wie eine weitere Methode zur Zeichenfolgenextraktion, Slice .Wenn Sie bei 0 beginnen, können Sie beide Methoden verwenden.
quelle
.substring()
nimmt Indizes. Sie können sich erinnern, weil es das einzige mit einem 'i' im Namen ist..slice()
nimmt auch Indizes.Wie in der Antwort von yatima2975 angedeutet, gibt es einen zusätzlichen Unterschied:
substr()
akzeptiert eine negative Startposition als Versatz vom Ende der Zeichenfolge.substring()
nicht.Von MDN :
Um die funktionalen Unterschiede zusammenzufassen:
substring(begin-offset, end-offset-exclusive)
wobei der Anfangsversatz0
oder größer istsubstr(begin-offset, length)
wobei der Anfangsversatz auch negativ sein kannquelle
Ein weiteres Problem, auf das ich kürzlich gestoßen bin, ist, dass in IE 8
"abcd".substr(-1)
fälschlicherweise zurückgegeben wird"abcd"
, während Firefox 3.6"d"
wie gewünscht zurückgegeben wird.slice
funktioniert auf beiden richtig.Mehr zu diesem Thema finden Sie hier .
quelle
Der Hauptunterschied ist das
Mit substr () können Sie die maximale Länge angeben, die zurückgegeben werden soll
Mit substring () können Sie die Indizes angeben, und das zweite Argument ist NICHT inklusive
Es gibt einige zusätzliche Feinheiten zwischen substr () und substring (), z. B. die Behandlung gleicher und negativer Argumente. Beachten Sie auch, dass Teilzeichenfolge () und Slice () ähnlich, aber nicht immer gleich sind.
quelle
slice
:"string".slice(2,-2); // "ri"
Der Unterschied ist der zweite Parameter. Ihre zweiten Parameter, während beide Zahlen, erwarten zwei verschiedene Dinge:
Bei Verwendung von Teilzeichenfolgen ist der zweite Parameter der erste Index, der Folgendes nicht enthält:
Bei Verwendung von substr ist der zweite Parameter die Anzahl der Zeichen, die in den Teilstring aufgenommen werden sollen:
quelle
Der große Unterschied besteht darin, dass
substr()
es sich um eine veraltete Methode handelt , die weiterhin verwendet werden kann, jedoch mit Vorsicht angewendet werden sollte, da davon ausgegangen wird, dass sie irgendwann in der Zukunft vollständig entfernt werden. Sie sollten daran arbeiten, ihre Verwendung aus Ihrem Code zu entfernen. Und diesubstring()
Methode war erfolgreich und spezifizierte die erstere.quelle
substr()
? Ich habe es von mehreren Personen gelesen, kann jedoch im Internet keine Informationen finden, die die Aussage stützen. Außerdem nimmt Mozilla es nicht in die Liste der veralteten / veralteten Funktionen auf: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…String.prototype.substr()
ist in Anhang B des ECMA-262-Standards definiert, dessen Einführung besagt: "... Programmierer sollten diese Funktionen und Verhaltensweisen beim Schreiben eines neuen ECMAScript-Codes nicht verwenden oder annehmen. ..."substr()
wird in einigen Dokumenten als veraltet eingestuft.Slice vs Substr vs Substring vs [] Methoden
Jede dieser Javascript-Methoden bietet Leistungsvorteile. Bitte nutzen Sie diese Funktionen entsprechend.
quelle
Teilzeichenfolge (): Es hat 2 Parameter "Start" und "Ende".
Wenn der Parameter end nicht angegeben ist, werden alle Zeichen von der Startposition bis zum Ende der Zeichenfolge extrahiert.
Wenn der Wert des Startparameters größer als der Wert des Endparameters ist, tauscht diese Methode die beiden Argumente aus. Dies bedeutet, dass Start als Ende und Ende als Start verwendet werden.
substr () : Es hat 2 Parameter "start" und "count".
Der Startparameter ist erforderlich und gibt die Position an, an der die Extraktion gestartet werden soll.
Der Parameter count ist optional und gibt die Anzahl der zu extrahierenden Zeichen an.
Wenn der Parameter count nicht angegeben wird, werden alle Zeichen von der Startposition bis zum Ende der Zeichenfolge extrahiert. Wenn count 0 oder negativ ist, wird eine leere Zeichenfolge zurückgegeben.
quelle
Teilzeichenfolge (startIndex, endIndex (nicht enthalten))
substr (startIndex, wie viele Zeichen)
quelle