bagaimana cara mendapatkan karakter terakhir dari sebuah string?

526

Cara mendapatkan karakter terakhir dari string:

"linto.yahoo.com."

Karakter terakhir dari string ini adalah "."

Bagaimana saya bisa menemukan ini?

Linto PD
sumber
dapatkah Anda menerima jawaban ini , karena ini adalah yang terbaik dan harus ditampilkan terlebih dahulu.
Sharku

Jawaban:

995

Alternatif yang elegan dan pendek, adalah String.prototype.slicemetode.

Hanya dengan:

str.slice(-1);

Indeks awal negatif mengiris string dari length+index, menjadi length, menjadi indeks -1, karakter terakhir diekstraksi:

"abc".slice(-1); // "c";
CMS
sumber
9
Catatan: array juga memiliki slice()metode. - Fungsionalitas mereka secara konseptual serupa (sebagian salinan) -------- (Untuk berjaga-jaga jika Anda membaca kode dan melihat .slice())
Peter Ajtai
1
Apa yang Anda maksud dengan "string UTF-8"? Ungkapan itu tidak masuk akal. Namun FWIW, string JavaScript adalah binatang buas yang lucu: mereka adalah urutan nilai integer 16-bit yang tidak ditandatangani. Jika maksud dari string Anda adalah untuk menyimpan karakter, maka kode di atas mengembalikan nilai 16-bit terakhir, yang tidak akan cantik jika itu adalah bagian kedua dari pasangan pengganti. Tapi sekali lagi, apa yang sebenarnya Anda maksud dengan "string UTF-8"? UTF-8 adalah skema pengkodean yang mungkin masuk akal jika Anda memiliki array byte, tetapi tidak ada artinya sama sekali dalam hal string. Hanya penasaran.
Ray Toal
4
Diturunkan karena ini tidak menjawab pertanyaan. Ini mengasumsikan pengguna hanya ingin menghapus karakter, tetapi bagaimana jika Anda perlu menangkap karakter terakhir dan merespons berdasarkan apa itu? Jawaban str.charAt () adalah yang benar.
gregtczap
6
@Egg, tampaknya Anda tidak mencoba contoh saya, str.slice(-1)memang mendapatkan karakter terakhir dari string (sebagai OP yang diperlukan), sama seperti jika Anda digunakan str.charAt(str.length - 1), coba: "abc".slice(-1). Saya menunjukkan di sini penggunaan String.prototype.slicedengan indeks negatif. str.slice(-n)akan mendapatkan nkarakter terakhir dari string asli sebagai nilai string baru. Info lebih lanjut: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
CMS
9
@ CMS Anda benar, metode Anda benar-benar mengambil karakter terakhir dari string tanpa memotongnya. Metode elegan yang bagus juga. Untuk beberapa alasan saya berpikir itu akan memotong karakter itu dan mengembalikan string yang dipangkas. Maaf tentang itu, saya merasa seperti orang bodoh karena tidak mencobanya terlebih dahulu.
gregtczap
97

Gunakan charAt:

Metode charAt () mengembalikan karakter pada indeks yang ditentukan dalam string.

Anda bisa menggunakan metode ini bersamaan dengan lengthproperti string untuk mendapatkan karakter terakhir dalam string itu.
Sebagai contoh:

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

Donat
sumber
64
str.charAt(str.length - 1)

Beberapa browser memungkinkan (sebagai ekstensi non-standar) Anda mempersingkat ini menjadi:

str[str.length - 1];
Matthew Flaschen
sumber
50

Anda dapat mencapai ini menggunakan cara yang berbeda tetapi dengan kinerja yang berbeda,

1. Menggunakan notasi braket:

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

Tetapi tidak disarankan menggunakan kurung. Periksa alasannya di sini

2. karakter [indeks]:

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

Ini bisa dibaca dan tercepat di antara yang lainnya. Ini cara yang paling direkomendasikan.

3. substring:

str.substring(str.length - 1);

4. iris:

str.slice(-1);

Ini sedikit lebih cepat daripada substring.

Anda dapat memeriksa kinerjanya di sini

Dengan ES6:

Kamu bisa menggunakan str.endsWith("t");

Tetapi tidak didukung di IE. Lihat detail selengkapnya tentang ujungnyaDengan di sini

Code_Mode
sumber
2
Tidak perlu melakukan pemerasan kinerja pada mesin saat ini. Gunakan solusi yang paling ringkas. Pilihan saya aktifstr.slice(-1);
avalanche1
1
Saya tidak yakin bagaimana endsWithcocok di sini, itu melakukan sesuatu yang sama sekali berbeda.
John Montgomery
38

Gunakan substr dengan parameter -1 :

"linto.yahoo.com.". substr (-1);

sama dengan "."

catatan:

Untuk mengekstrak karakter dari ujung string, gunakan angka mulai negatif (Ini tidak berfungsi di IE 8 dan sebelumnya).

Spikolynn
sumber
3
Sepertinya yang ini lebih pendek dari slice (), saya ingin tahu yang lebih baik dan lebih cepat.
stramin
12

Cara mudah untuk melakukannya adalah menggunakan ini :)

var word = "waffle"
word.endsWith("e")
Connie
sumber
1
Bagus dan sederhana +1
Julian
1
Tambahan yang sangat bagus untuk ES6 tetapi tidak berfungsi di IE jika Anda harus mendukungnya, itu bisa jadi polyfilled .
sanjsanj
Saya tidak melihat bagaimana ini menjawab pertanyaan sama sekali, mendapatkan karakter terakhir dari string sama sekali berbeda dari memeriksa apakah itu cocok dengan karakter tertentu.
John Montgomery
8

Anda bisa mendapatkan karakter terakhir seperti ini:

var lastChar=yourString.charAt(yourString.length-1);
Colin Hebert
sumber
4

Gunakan fungsi JavaScript charAt untuk mendapatkan karakter pada posisi 0-indexed yang diberikan. Gunakan panjang untuk mengetahui berapa lama String. Anda menginginkan karakter terakhir sehingga panjangnya - 1. Contoh:

var word = "linto.yahoo.com.";
var last = word.charAt(word.length - 1);
alert('The last character is:' + last);
Adam
sumber
4
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];
Salar
sumber
Sementara potongan kode ini dapat menyelesaikan pertanyaan, termasuk penjelasan sangat membantu untuk meningkatkan kualitas posting Anda. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa depan, dan orang-orang itu mungkin tidak tahu alasan untuk saran kode Anda. Tolong juga cobalah untuk tidak membuat kerumunan kode Anda dengan komentar penjelasan, ini mengurangi keterbacaan kode dan penjelasan!
kayess
0

Anda dapat menggunakan metode ES6 sederhana ini

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


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

Ini akan berfungsi di setiap browser.

vdegenne
sumber
0

Anda dapat menggunakan yang berikut ini. Dalam kasus karakter terakhir ini adalah pembunuhan yang berlebihan tetapi untuk substring, ini berguna:

var word = "linto.yahoo.com.";
var last = ".com.";
if (word.substr(-(last.length)) == last)
alert("its a match");
Gauravsa
sumber
-1
>Try this...     

console.log("linto.yahoo.com.".charAt("linto.yahoo.com.".length-1));
Vishal
sumber