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?


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";

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


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];

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


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).


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")

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);

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);

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

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.


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");

-1
>Try this...     

console.log("linto.yahoo.com.".charAt("linto.yahoo.com.".length-1));
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.