como obter o último caractere de uma string?

526

Como obter o último caractere da string:

"linto.yahoo.com."

O último caractere dessa sequência é "."

Como posso encontrar isso?

Linto PD
fonte
você poderia aceitar esta resposta, pois é a melhor e deve ser exibida primeiro.
22618 Sharku

Respostas:

995

Uma alternativa elegante e curta, é o String.prototype.slicemétodo.

Apenas por:

str.slice(-1);

Um índice inicial negativo corta a cadeia de length+index, para length, sendo índice -1, o último caractere é extraído:

"abc".slice(-1); // "c";
CMS
fonte
9
Nota lateral: matrizes também têm um slice()método. - Sua funcionalidade é conceitualmente similar (cópias parciais) -------- (Apenas no caso de você estar código de leitura e veja .slice())
Peter Ajtai
1
O que você quer dizer com "string UTF-8"? A frase não faz sentido. FWIW, porém, as seqüências de JavaScript são bestas engraçadas: são sequências de valores inteiros de 16 bits não assinados. Se a intenção da sua string for armazenar caracteres, o código acima retornará o último valor de 16 bits, o que não seria bom se fosse a segunda parte de um par substituto. Mas, novamente, o que exatamente você quer dizer com "string UTF-8"? UTF-8 é um esquema de codificação que pode fazer sentido se você tiver uma matriz de bytes, mas não significa nada quando se trata de strings. Apenas curioso.
quer
4
Voto negativo, porque isso não responde à pergunta. Ele assume que o usuário deseja apenas remover o personagem, mas e se você precisar capturar o último caractere e responder com base no que é? As respostas str.charAt () são as corretas.
precisa saber é o seguinte
6
@Egg, parece que você não tentar o meu exemplo, str.slice(-1)de facto, obter o último caractere do string (como o OP necessário), assim como se você usou str.charAt(str.length - 1), tente: "abc".slice(-1). Eu estava mostrando aqui um uso de String.prototype.slicecom um índice negativo. str.slice(-n)obterá os últimos ncaracteres da sequência original como um novo valor. Mais informações: developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/…
CMS
9
@ CM Você está certo, seu método realmente pega o último caractere da string sem apará-lo. Bom método elegante também. Por alguma razão, eu estava pensando que ia cortar esses caracteres e retornar uma corda cortada. Desculpe por isso, me sinto um idiota por não tentar primeiro.
precisa saber é o seguinte
97

Use charAt:

O método charAt () retorna o caractere no índice especificado em uma string.

Você pode usar esse método em conjunto com a lengthpropriedade de uma sequência para obter o último caractere nessa sequência.
Por exemplo:

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

Rosquinha
fonte
64
str.charAt(str.length - 1)

Alguns navegadores permitem (como uma extensão não padrão) que você reduza para:

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

Você pode conseguir isso de maneiras diferentes, mas com desempenho diferente,

1. Usando notação de colchete:

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

Mas não é recomendável usar colchetes. Confira os motivos aqui

2. charAt [index]:

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

Isso é legível e mais rápido, entre outros. É a maneira mais recomendada.

3. substring:

str.substring(str.length - 1);

4. fatia:

str.slice(-1);

É um pouco mais rápido que substring.

Você pode verificar o desempenho aqui

Com ES6:

Você pode usar str.endsWith("t");

Mas não é suportado no IE. Confira mais detalhes sobre endsWith aqui

Code_Mode
fonte
2
Não há necessidade de reduzir o desempenho nas máquinas atuais. Use a solução mais concisa. Meu voto está str.slice(-1);
ativado
1
Não tenho certeza de como se endsWithencaixa aqui, isso faz algo completamente diferente.
John Montgomery
38

Use substr com o parâmetro -1 :

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

é igual a "."

Nota:

Para extrair caracteres do final da string, use um número inicial negativo (isso não funciona no IE 8 e versões anteriores).

Spikolynn
fonte
3
Parece que este é mais curto que slice (), gostaria de saber qual é o melhor e mais rápido.
Stramin #
12

Uma maneira fácil de fazer isso é usando isso :)

var word = "waffle"
word.endsWith("e")
Connie
fonte
1
Agradável e simples +1
Julian
1
Complemento realmente bom para o ES6, mas ele não funciona no IE, se você precisar suportá-lo, ele pode ser preenchido com polyfilled .
sanjsanj
Não vejo como isso responde à pergunta, obter o último caractere de uma string é completamente diferente de verificar se ele corresponde a um caractere específico.
John Montgomery
8

Você pode obter o último caractere assim:

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

Use a função JavaScript charAt para obter um caractere em uma determinada posição indexada em 0. Use o comprimento para descobrir quanto tempo a String é. Você quer o último caractere para que seja o comprimento - 1. Exemplo:

var word = "linto.yahoo.com.";
var last = word.charAt(word.length - 1);
alert('The last character is:' + last);
Adão
fonte
4
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];
Salar
fonte
Embora esse trecho de código possa resolver a questão, incluir uma explicação realmente ajuda a melhorar a qualidade da sua postagem. Lembre-se de que você está respondendo à pergunta dos leitores no futuro e essas pessoas podem não saber os motivos da sua sugestão de código. Tente também não sobrecarregar seu código com comentários explicativos, pois isso reduz a legibilidade do código e das explicações!
kayess
0

Você pode usar este método ES6 simples

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


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

Isso funcionará em todos os navegadores.

vdegenne
fonte
0

Você pode usar o seguinte. Neste caso de último caractere, é um exagero, mas para uma substring, é útil:

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

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