bir dizenin son karakteri nasıl alınır?


526

Dizenin son karakteri nasıl elde edilir:

"linto.yahoo.com."

Bu dizenin son karakteri "."

Bunu nasıl bulabilirim?


Bu cevabı kabul edebilir misiniz , çünkü en iyisi budur ve önce görüntülenmelidir.
Sharku

Yanıtlar:


995

Zarif ve kısa bir alternatif, String.prototype.sliceyöntemdir.

Sadece:

str.slice(-1);

Negatif bir başlangıç indeksi gelen dize dilimler length+indexiçin, lengthvarlık endeksi, -1geçen karakter ayıklanır:

"abc".slice(-1); // "c";

9
Yan not: dizilerin de bir slice()yöntemi vardır. - İşlevleri kavramsal olarak benzerdir (kısmi kopyalar) -------- (Sadece kodu okuyup görmeniz durumunda .slice())
Peter Ajtai

1
"UTF-8 dizesi" ile ne demek istiyorsun? İfade hiçbir anlam ifade etmiyor. Bununla birlikte, JavaScript dizeleri komik hayvanların kendisidir: işaretsiz 16 bit tam sayı değerlerinin dizileridir. Dizenizin amacı karakterleri saklamaksa, yukarıdaki kod son 16 bit değerini döndürür; bu, bir vekil çiftin ikinci kısmı olsaydı hoş olmaz. Ama yine de, "UTF-8 dizesi" ile tam olarak ne demek istiyorsun? UTF-8, bir bayt diziniz varsa anlamlı olabilecek bir kodlama şemasıdır, ancak dizeler söz konusu olduğunda hiçbir şey ifade etmez. Sadece merak.
Ray Toal

4
Bu soruya cevap vermediği için indirildi. Kullanıcının sadece karakteri kaldırmak istediğini varsayar, ancak ya son karakteri yakalamanız ve ne olduğuna göre yanıt vermeniz gerekiyorsa? Str.charAt () cevapları doğru cevaplardır.
gregtczap

6
@Egg, sen de beni örnek deneyin vermedi görünüyor str.slice(-1)kullandığınız gibi eğer (OP gerektiği gibi) gerçekten katarın son karakterini alıyor str.charAt(str.length - 1)deneyin: "abc".slice(-1). Burada String.prototype.slicenegatif indeksli bir kullanım gösteriyordum . orijinal dizenin str.slice(-n)son nkarakterlerini yeni bir dize değeri olarak alır. Daha fazla bilgi: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
CMS

9
@CMS Haklısınız, yönteminiz dizgenin son karakterini kırpmadan tutuyor. Çok güzel zarif bir yöntem. Nedense bu karakterleri kesip kırpılmış bir ip döndüreceğini düşünüyordum. Üzgünüm, önce denemediğim için kendimi aptal gibi hissediyorum.
gregtczap

97

Kullanım charAt:

CharAt () yöntemi, bir dizede belirtilen dizindeki karakteri döndürür.

Bu dizgideki lengthson karakteri almak için bir dizenin özelliğiyle birlikte bu yöntemi kullanabilirsiniz .
Örneğin:

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


64
str.charAt(str.length - 1)

Bazı tarayıcılar (standart olmayan bir uzantı olarak) bunu kısaltmanıza izin verir:

str[str.length - 1];

50

Bunu farklı yollarla ancak farklı performansla gerçekleştirebilirsiniz,

1. dirsek gösterimi kullanarak:

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

Ancak parantez kullanılması önerilmez. Buradaki nedenleri kontrol edin

2. charAt [dizin]:

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

Bu, diğerleri arasında okunabilir ve en hızlıdır. En çok tavsiye edilen yöntemdir.

3. alt dize:

str.substring(str.length - 1);

4. dilim:

str.slice(-1);

Alt dizeden biraz daha hızlı.

Performansı buradan kontrol edebilirsiniz

ES6 ile:

Kullanabilirsiniz str.endsWith("t");

Ancak IE'de desteklenmez. Endswith hakkında daha fazla ayrıntı edin burada


2
Mevcut makinelerde performans sıkmaya gerek yoktur. En özlü çözümü kullanın. Benim str.slice(-1);
avalanche1

1
Buraya nasıl endsWithuyduğundan emin değilim , bu tamamen farklı bir şey yapıyor.
John Montgomery

38

-1 parametresiyle substr kullanın :

"Linto.yahoo.com." Substr (1).;

eşittir "."

Not:

Dizenin sonundaki karakterleri ayıklamak için, negatif bir başlangıç ​​numarası kullanın (IE 8 ve önceki sürümlerde çalışmaz).


3
Bu dilim () kadar kısa gibi görünüyor, hangisinin daha iyi ve daha hızlı olduğunu merak ediyorum.
13'te stramin

12

Bunu yapmanın kolay bir yolu bunu kullanmaktır :)

var word = "waffle"
word.endsWith("e")

1
Güzel ve basit +1
Julian

1
Gerçekten iyi ES6 için ilave ama bunu destekleyecek varsa o olabilir, IE çalışmıyor polyfilled gerçi.
sanjsanj

Bunun soruyu nasıl cevapladığını göremiyorum, bir dizenin son karakterini elde etmek, belirli bir karakterle eşleşip eşleşmediğini kontrol etmekten tamamen farklı.
John Montgomery

8

Son karakteri şöyle alabilirsiniz:

var lastChar=yourString.charAt(yourString.length-1);

4

Belirli bir 0 dizinli konumda bir karakter elde etmek için JavaScript charAt işlevini kullanın. Dizenin ne kadar sürdüğünü öğrenmek için uzunluğu kullanın . Son karakteri istiyorsunuz yani uzunluk - 1. Örnek:

var word = "linto.yahoo.com.";
var last = word.charAt(word.length - 1);
alert('The last character is:' + last);

4
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];

Bu kod snippet'i soruyu çözebilir, ancak bir açıklama dahil olmak , yayınınızın kalitesini artırmaya yardımcı olur. Gelecekte okuyucular için soruyu cevapladığınızı ve bu kişilerin kod önerinizin nedenlerini bilmeyebileceğini unutmayın. Lütfen kodunuzu açıklayıcı yorumlarla doldurmamaya çalışın, bu hem kodun hem de açıklamaların okunabilirliğini azaltır!
kayess

0

Bu basit ES6 yöntemini kullanabilirsiniz

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


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

Bu her tarayıcıda çalışır.


0

Aşağıdakileri kullanabilirsiniz. Bu son karakter durumunda bu bir aşırıya kaçmadır ancak bir alt dize için yararlıdır:

var word = "linto.yahoo.com.";
var last = ".com.";
if (word.substr(-(last.length)) == last)
alert("its a match");

-1
>Try this...     

console.log("linto.yahoo.com.".charAt("linto.yahoo.com.".length-1));
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.