Jaka jest różnica pomiędzy
alert("abc".substr(0,2));
i
alert("abc".substring(0,2));
Oba wydają się wydawać „ab”.
javascript
substring
Różnica silnika
źródło
źródło
substring
przewyższa wszystkie inne przeglądarki Chrome .slice
metody,substring
nie obsługuje korekty parametrów ujemnych.substr
metodę, jak isubstring
metodę”? Czy to naprawdę preferowana metoda przeciążania?substr()
byciu czymś, co możesz nazwać „pseudo-przestarzałym” u góry strony z dokumentami tutaj: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… - Czy ktoś ma więcej informacji na ten temat, np. Czy istnieje jakakolwiek przeglądarka, która planuje wycofać sięsubstr()
w dowolnym momencie w przyszłości? Lub, jak zasugerował Steven Lu, czy korzystanie zsubstr()
przyszłości może mieć wady wydajności ?Odpowiedzi:
Różnica polega na drugim argumencie. Drugim argumentem
substring
jest indeks, na którym należy się zatrzymać (ale nie obejmuje), ale drugim argumentemsubstr
jest maksymalna długość do zwrócenia.Spinki do mankietów?
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring
źródło
String.prototype.substr()
przestarzałą ... (Jest zdefiniowana w załączniku B normy ECMA-262, której wprowadzenie stanowi: „… Programiści nie powinni używać ani zakładać, że istnienie tych cech i zachowań podczas pisania nowego kodu ECMAScript.… ”)substring
( MDN ) przyjmuje parametry jako(from, to)
.substr
( MDN ) przyjmuje parametry jako(from, length)
.Aktualizacja : MDN uważa starszą
substr
wersję.Możesz pamiętać, że
substring
pobiera indeksy, podobnie jak kolejna metoda wyodrębniania ciągów, wycinanie .Zaczynając od 0, możesz użyć dowolnej metody.
źródło
.substring()
bierze indeksy. Możesz pamiętać, ponieważ jest to jedyny z literą „i” w nazwie..slice()
bierze też indeksy.Jak wskazano w odpowiedzi yatima2975, istnieje dodatkowa różnica:
substr()
przyjmuje ujemną pozycję początkową jako przesunięcie od końca łańcucha.substring()
nie.Z MDN :
Podsumowując różnice funkcjonalne:
substring(begin-offset, end-offset-exclusive)
gdzie początek-przesunięcie jest0
większe lub większesubstr(begin-offset, length)
gdzie offset początkowy może być również ujemnyźródło
Innym problemem, z którym ostatnio się spotkałem, jest to, że w IE 8
"abcd".substr(-1)
błędnie powraca"abcd"
, a Firefox 3.6 powraca"d"
tak, jak powinien.slice
działa poprawnie na obu.Więcej na ten temat można znaleźć tutaj .
źródło
Główną różnicą jest to
substr () pozwala określić maksymalną długość do zwrócenia
substring () pozwala określić indeksy, a drugi argument NIE jest włącznie
Istnieją pewne dodatkowe subtelności między substr () i substring (), takie jak obsługa argumentów równych i argumentów ujemnych. Zauważ też, że substring () i slice () są podobne, ale nie zawsze takie same.
źródło
slice
:"string".slice(2,-2); // "ri"
Różnica jest drugim parametrem. Ich drugie parametry, podczas gdy obie liczby, oczekują dwóch różnych rzeczy:
W przypadku korzystania z podciągów drugi parametr jest pierwszym indeksem, który nie obejmuje:
W przypadku używania substr drugi parametr to liczba znaków, które należy uwzględnić w substring:
źródło
Duża różnica polega na tym, że
substr()
jest to przestarzała metoda, której można nadal używać, ale powinna być stosowana ostrożnie, ponieważ oczekuje się, że zostaną w przyszłości całkowicie usunięte. Powinieneś pracować, aby usunąć ich użycie z kodu. Asubstring()
metoda udało i określone byłego jeden.źródło
substr()
? Przeczytałem go od kilku osób, ale nie mogę znaleźć w Internecie żadnych informacji, które mogłyby wspierać to oświadczenie. Ponadto Mozilla nie umieszcza go na liście przestarzałych / przestarzałych funkcji: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…String.prototype.substr()
jest zdefiniowany w załączniku B do standardu ECMA-262, którego wprowadzenie stanowi: „… Programiści nie powinni używać ani zakładać istnienia tych cech i zachowań podczas pisania nowego kodu ECMAScript.…”substr()
jest naprawdę uważany za przestarzały w niektórych dokumentach.Metody plasterek vs Substr vs Substring vs []
Każda z tych metod javascript ma zalety związane z wydajnością. Proszę korzystać z tych funkcji odpowiednio.
źródło
substring (): Ma 2 parametry „start” i „end”.
Jeśli parametr końcowy nie zostanie określony, wszystkie znaki od pozycji początkowej do końca ciągu zostaną wyodrębnione.
Jeśli wartość parametru początkowego jest większa niż wartość parametru końcowego, ta metoda zamieni oba argumenty. Oznacza to, że początek zostanie użyty jako koniec, a koniec zostanie użyty jako początek.
substr () : Ma 2 parametry „start” i „count”.
parametr początkowy jest wymagany i określa pozycję, od której należy rozpocząć ekstrakcję.
parametr count jest opcjonalny i określa liczbę znaków do wyodrębnienia.
Jeśli parametr count nie zostanie określony, wszystkie znaki od pozycji początkowej do końca ciągu zostaną wyodrębnione. Jeśli liczba wynosi 0 lub jest ujemna, zwracany jest pusty ciąg.
źródło
substring (startIndex, endIndex (brak w zestawie))
substr (startIndex, ile znaków)
źródło