Jak wybrać ostatnie dwa znaki ciągu


194

Muszę wybrać dwa ostatnie znaki ze zmiennej, bez względu na to, czy jest to cyfra, czy litery.

Na przykład:

var member = "my name is Mate";

Chciałbym wyświetlić dwie ostatnie litery z łańcucha w memberzmiennej.

Odpowiedzi:



23

Spróbuj tego, pamiętaj, że nie musisz określać indeksu końcowego w substring.

var characters = member.substr(member.length -2);

Twoja oryginalna odpowiedź była prawdopodobnie bardziej odpowiednia. Według MDN w substrDokumentach , „Microsoft JScript nie obsługuje wartości ujemne dla indeksu początkowego.”

23

EDYCJA: 2020: użyj, string.slice(-2)jak mówią inni - patrz poniżej.

teraz 2016 po prostu string.substr(-2)powinno załatwić sprawę (nie podciąg (!))

zaczerpnięte z MDN

Składnia

str.substr(start[, length])

Parametry

początek

Miejsce rozpoczęcia wydobywania postaci. Jeśli podano liczbę ujemną, jest ona traktowana jako strLength + start, gdzie strLength jest długością łańcucha (na przykład, jeśli start to -3, to jest traktowane jako strLength - 3.) długość Opcjonalne. Liczba znaków do wyodrębnienia.

EDIT 2020

MDN mówi

Ostrzeżenie: Chociaż String.prototype.substr (…) nie jest ściśle przestarzałe (jak w „usuniętym ze standardów WWW”), jest uważane za funkcję starszego typu i należy go unikać, gdy jest to możliwe. Nie jest częścią podstawowego języka JavaScript i może zostać usunięty w przyszłości.


1
„JScript Microsoft nie obsługuje wartości ujemnych dla indeksu początkowego. Aby użyć tej funkcji w JScript, możesz użyć następującego kodu ...” - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… (podczas gdy w przypadku kromki nie mają żadnego wypełnienia: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… )
George Birbilis

zwróć uwagę, że JScript nie znajduje się w przeglądarce, jest to język skryptowy do pracy głównie z automatyzacją hosta skryptów Windows (podobny do VBScript), więc logiczne jest, że w tym czasie nie zawierał takich metod. Nowe wersje Windows promują PowerShell, z tajemnicza składnia. W każdym razie komentarz był taki, że plasterek jest lepszym kandydatem niż substr w przypadku JScript, ponieważ obsługuje ujemne indeksy docs.microsoft.com/en-us/previous-versions/windows/…
George Birbilis

9

W poniższym przykładzie użyto slice()indeksów ujemnych

var str = 'my name is maanu.';
console.log(str.slice(-3));     // returns 'nu.' last two
console.log(str.slice(3, -7)); // returns 'name is'
console.log(str.slice(0, -1));  // returns 'my name is maanu'


5

Możesz spróbować

member.substr(member.length-2);

Przegapiłeś member.length z indeksu początkowego :)
mattytommo

Ach fajnie, zaktualizowałem swoją odpowiedź, aby zastanowić się, dziękuję TJ i Ibu :)
mattytommo

1
@TJCrowder: Dość pewny, że indeks ujemny jako pozycja początkowa nie działa dla IE8 i niższych.

1
@amnotiam: Dziękuję, bardzo dobrze wiedzieć! Właśnie przetestowałem i na pewno nie działałem na IE7 lub IE8 (i prawdopodobnie nie będzie działał na IE6). IE9 w trybie standardów działał poprawnie (ale nie był kompatybilny). Nigdy nie używam substr, a teraz żałuję, że nie mogłem znaleźć wątku, w którym jakiś zadowolony z siebie dupek sprawił mi trudność (a w szczególności nie używał ujemnych indeksów) - teraz mogę to uzasadnić! :-)
TJ Crowder


2

W tym celu należy użyć podciągów, a nie jQuery.

Wypróbuj coś takiego:

member.substring(member.length - 2, member.length)

W3Schools (nieoficjalne, ale czasami pomocne): http://www.w3schools.com/jsref/jsref_substring.asp

Dodanie łącza MDN zgodnie z żądaniem komentatora: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring


3
proszę podać linki do oficjalnej dokumentacji, takiej jak MSDN lub MDN, a nie w3fools :)
jbabey

w3schools nie jest „oficjalny”, ale ogólnie zawiera wiarygodne informacje. MSDN jest oficjalny, ale jest specyficzny dla IE i nie ma nic wspólnego z Firefoksem, Safari itp.
Matt

dodał link do komentarza, gdy go publikowałeś
Matt

1
var member = "my name is maanu";

var answer=member.substring(0,member.length - 2);

alert(answer);

1
Co robi kod? Napisz wyjaśnienie, co to osiąga.
DNKROZ

3
Aby być uczciwym, pytanie jest bardzo szczegółowe na temat tego, co powinien zrobić kod, więc odpowiedź składająca się (w istocie) z jednego wiersza kodu jest dość oczywista.
anaximander

1
kodem wyjściowym będzie „nu”. Weź 2 ostatnie słowa od słowa.
Biju s

7
Wydaje mi się, że kodem wyjściowym będzie „moje imię to maa” (wszystko ~ oprócz ~ dwóch ostatnich liter), co nie jest pytaniem zadanym, jeśli dobrze to zrozumiem.
ewino
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.