jak uzyskać ostatni znak ciągu?

526

Jak uzyskać ostatni znak ciągu:

"linto.yahoo.com."

Ostatnim znakiem tego ciągu jest "."

Jak mogę to znaleźć?

Linto PD
źródło
czy możesz zaakceptować odpowiedź, ponieważ jest ona najlepsza i powinna zostać wyświetlona jako pierwsza.
Sharku

Odpowiedzi:

995

String.prototype.sliceMetoda jest elegancką i krótką alternatywą .

Tylko przez:

str.slice(-1);

Ujemny indeks początkowy wycina ciąg od length+index, do lengthindeksu -1, wyodrębniany jest ostatni znak:

"abc".slice(-1); // "c";
CMS
źródło
9
Uwaga dodatkowa: tablice mają również slice()metodę. - Ich funkcjonalność jest koncepcyjnie podobna (kopie częściowe) -------- (Na wszelki wypadek czytasz kod i widzisz .slice())
Peter Ajtai
1
Co rozumiesz przez „ciąg UTF-8”? Fraza nie ma sensu. FWIW jednak, ciągi JavaScript same w sobie są zabawnymi bestiami: są sekwencjami 16-bitowych liczb całkowitych bez znaku. Jeśli celem twojego ciągu jest przechowywanie znaków, powyższy kod zwraca ostatnią 16-bitową wartość, co nie byłoby ładnie, gdyby była to druga część pary zastępczej. Ale co dokładnie rozumiesz przez „ciąg UTF-8”? UTF-8 to schemat kodowania, który może mieć sens, jeśli masz tablicę bajtów, ale nic nie znaczy, jeśli chodzi o łańcuchy. Po prostu ciekawy.
Ray Toal,
4
Zagłosowano, ponieważ to nie odpowiada na pytanie. Zakłada, że ​​użytkownik chce po prostu usunąć postać, ale co zrobić, jeśli chcesz uchwycić ostatnią postać i odpowiedzieć na podstawie tego, co to jest? Odpowiedzi na str.charAt () są poprawne.
gregtczap
6
@Egg, wydaje się, że nie próbować za moim przykładem, str.slice(-1)rzeczywiście dostać ostatni znak łańcucha (wymagane OP), tak jakby został użyty str.charAt(str.length - 1), spróbuj: "abc".slice(-1). Pokazałem tutaj użycie String.prototype.slicez indeksem ujemnym. str.slice(-n)otrzyma ostatnie nznaki oryginalnego ciągu jako nową wartość ciągu. Więcej informacji: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
CMS
9
@CMS Masz rację, twoja metoda faktycznie pobiera ostatni znak ciągu bez przycinania go. Również ładna, elegancka metoda. Z jakiegoś powodu myślałem, że zamierza przyciąć te znaki i zwrócić przycięty sznur. Przepraszam za to, czuję się jak idiota, że ​​najpierw tego nie spróbowałem.
gregtczap
97

Użyj charAt:

Metoda charAt () zwraca ciąg znaków o podanym indeksie.

Możesz użyć tej metody w połączeniu z lengthwłaściwością ciągu, aby uzyskać ostatni znak w tym ciągu.
Na przykład:

const myString = "linto.yahoo.com.";
const stringLength = myString.length; // this will be 16
console.log('lastChar: ', myString.charAt(stringLength - 1)); // this will be the string

Pączek
źródło
63
str.charAt(str.length - 1)

Niektóre przeglądarki pozwalają (jako niestandardowe rozszerzenie) skrócić to do:

str[str.length - 1];
Matthew Flaschen
źródło
50

Możesz to osiągnąć na różne sposoby, ale z różną wydajnością,

1. Używając notacji nawiasowej:

var str = "Test"; var lastLetter = str[str.length - 1];

Ale nie zaleca się używania nawiasów. Sprawdź przyczyny tutaj

2. charAt [indeks]:

var lastLetter = str.charAt(str.length - 1)

Jest to między innymi czytelne i najszybsze. Jest to najbardziej zalecany sposób.

3. substring:

str.substring(str.length - 1);

4. plasterek:

str.slice(-1);

Jest nieco szybszy niż substring.

Możesz sprawdzić wydajność tutaj

Z ES6:

Możesz użyć str.endsWith("t");

Ale nie jest obsługiwany w IE. Sprawdź więcej szczegółów na temat końcówek tutaj

Code_Mode
źródło
2
Nie ma potrzeby zmniejszania wydajności na obecnych maszynach. Użyj najbardziej zwięzłego rozwiązania. Mój głos jest włączonystr.slice(-1);
lawina 1
1
Nie jestem pewien, jak endsWithtu pasuje, robi to coś zupełnie innego.
John Montgomery
38

Użyj substr z parametrem -1 :

„linto.yahoo.com.”. substr (-1);

równa się "."

Uwaga:

Aby wyodrębnić znaki z końca łańcucha, użyj ujemnego numeru początkowego (nie działa w IE 8 i wcześniejszych).

Spikolynn
źródło
3
Wydaje się, że ten jest krótszy niż slice (), zastanawiam się, który jest lepszy i szybszy.
stramin
12

Łatwy sposób to zrobić :)

var word = "waffle"
word.endsWith("e")
Connie
źródło
1
Ładne i proste +1
Julian
1
Naprawdę dobry dodatek do ES6, ale nie działa w IE, jeśli musisz go obsługiwać, można go jednak uzupełnić .
sanjsanj
Nie rozumiem, jak to w ogóle odpowiada na pytanie, uzyskanie ostatniego znaku ciągu jest zupełnie inne niż sprawdzenie, czy pasuje on do określonego znaku.
John Montgomery
7

Ostatni znak możesz uzyskać w ten sposób:

var lastChar=yourString.charAt(yourString.length-1);
Colin Hebert
źródło
4

Użyj funkcji JavaScript charAt, aby uzyskać znak na danej pozycji 0-indeksowanej. Użyj długości, aby dowiedzieć się, jak długi jest ciąg. Chcesz ostatniego znaku, więc ma długość - 1. Przykład:

var word = "linto.yahoo.com.";
var last = word.charAt(word.length - 1);
alert('The last character is:' + last);
Adam
źródło
4
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];
Salar
źródło
Ten fragment kodu może rozwiązać pytanie, ale wyjaśnienie naprawdę pomaga poprawić jakość posta. Pamiętaj, że w przyszłości odpowiadasz na pytanie czytelników, a ci ludzie mogą nie znać przyczyn Twojej sugestii kodu. Staraj się również nie tłoczyć kodu objaśniającymi komentarzami, co zmniejsza czytelność zarówno kodu, jak i objaśnień!
kayess
0

Możesz użyć tej prostej metody ES6

const lastChar = (str) => str.split('').reverse().join(',').replace(',', '')[str.length === str.length + 1 ? 1 : 0];


// example
console.log(lastChar("linto.yahoo.com."));

Działa to we wszystkich przeglądarkach.

Vdegenne
źródło
0

Możesz użyć następujących. W tym przypadku ostatniego znaku jest to przesada, ale dla podłańcuchu przydatne:

var word = "linto.yahoo.com.";
var last = ".com.";
if (word.substr(-(last.length)) == last)
alert("its a match");
Gauravsa
źródło
-1
>Try this...     

console.log("linto.yahoo.com.".charAt("linto.yahoo.com.".length-1));
Vishal
źródło