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.

Mo.
źródło

Odpowiedzi:

23

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

var characters = member.substr(member.length -2);
mattytommo
źródło
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.

półbitka
źródło
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'

Shrroy
źródło
5

Możesz spróbować

member.substr(member.length-2);
thecodeparadox
źródło
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
3

Jeśli jest to liczba całkowita, potrzebujesz części ....

var result = number.toString().slice(-2);
Harijs Krūtainis
źródło
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

Matt
źródło
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);
Biju s
źródło
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