Como selecionar os dois últimos caracteres de uma string

193

Preciso selecionar os dois últimos caracteres da variável, sejam dígitos ou letras.

Por exemplo:

var member = "my name is Mate";

Gostaria de mostrar as duas últimas letras da string na membervariável

Mo.
fonte

Respostas:

23

Tente isso, observe que você não precisa especificar o índice final em substring.

var characters = member.substr(member.length -2);
mattytommo
fonte
Sua resposta original foi provavelmente mais apropriada. De acordo com os substrdocumentos da MDN , "o JScript da Microsoft não suporta valores negativos para o índice inicial".
23

EDIT: 2020: use string.slice(-2)como outros dizem - veja abaixo.

agora 2016 só string.substr(-2)deve fazer o truque (não substring (!))

extraído da MDN

Sintaxe

str.substr(start[, length])

Parâmetros

começar

Local no qual começar a extrair caracteres. Se um número negativo for fornecido, ele será tratado como strLength + start em que strLength é o comprimento da string (por exemplo, se start for -3, será tratado como strLength - 3.) length Opcional. O número de caracteres a serem extraídos.

EDIT 2020

MDN diz

Aviso: Embora String.prototype.substr (…) não seja estritamente reprovado (como em "removido dos padrões da Web"), ele é considerado uma função herdada e deve ser evitado quando possível. Não faz parte da linguagem JavaScript principal e pode ser removido no futuro.

halfbit
fonte
1
"O JScript da Microsoft não suporta valores negativos para o índice inicial. Para usar esse recurso no JScript, você pode usar o seguinte código ..." - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… (enquanto que para a fatia que eles não têm qualquer polyfill: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/... )
George Birbilis
observe que o JScript não está dentro do navegador, é uma linguagem de script para trabalhar principalmente com a automação de host de scripts do Windows (semelhante ao VBScript); portanto, é lógico que no momento não incluísse esses métodos. As versões mais recentes do Windows promovem o PowerShell, com sintaxe enigmática. De qualquer forma o comentário foi na fatia sendo melhor candidato do que substr no caso de JScript, uma vez que suporta índices negativos docs.microsoft.com/en-us/previous-versions/windows/...
George Birbilis
9

O exemplo a seguir usa slice()com índices negativos

var str = 'my name is maanu.';
console.log(str.slice(-3));     // returns 'nu.' last two
console.log(str.slice(3, -7)); // returns 'name is'
console.log(str.slice(0, -1));  // returns 'my name is maanu'

Shrroy
fonte
5

Podes tentar

member.substr(member.length-2);
thecodeparadox
fonte
Você perdeu member.length do seu índice começando :)
mattytommo
Ah legal, eu atualizei a minha resposta para refletir, graças TJ e Ibu :)
mattytommo
1
@TJCrowder: Certeza de que o índice negativo como posição inicial não funciona para o IE8 e inferior.
1
@ amnotiam: Obrigado, muito bom saber! Acabei de testar e, com certeza, não funcionou no IE7 ou IE8 (e, portanto, presumivelmente não funcionaria no IE6). O IE9 no modo de padrões estava bom (mas não compatível). Eu nunca uso substr, e agora desejo encontrar o segmento em que algum git presunçoso me deu um tempo difícil para isso (e, em particular, não usar índices negativos) - agora posso justificá-lo! :-)
TJ Crowder
3

Se é um número inteiro, você precisa de uma parte ....

var result = number.toString().slice(-2);
Harijs Krūtainis
fonte
2

Você deve usar substring, não jQuery, para fazer isso.

Tente algo como isto:

member.substring(member.length - 2, member.length)

W3Schools (não oficial, mas ocasionalmente útil): http://www.w3schools.com/jsref/jsref_substring.asp

Adicionando link MDN conforme solicitado pelo comentarista: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring

Matt
fonte
3
por favor fornecer links para uma documentação oficial, como MSDN ou MDN, não w3fools :)
jbabey
O w3schools não é "oficial", mas geralmente possui informações confiáveis. MSDN é oficial, mas é IE específico e não tem nada a ver com o Firefox, Safari, etc.
Matt
adicionou o link ao comentário enquanto você estava postando isso
Matt
1
var member = "my name is maanu";

var answer=member.substring(0,member.length - 2);

alert(answer);
Biju s
fonte
1
O que o código faz? Por favor, escreva uma explicação do que isso alcança.
DNKROZ
3
Para ser justo, a pergunta é muito específica sobre o que o código precisa fazer; portanto, uma resposta que consiste em (em essência) uma linha de código é bastante autoexplicativa.
Anaximandro
1
a saída do código será 'nu'. Pegue o último 2 caracteres da palavra.
Biju s
7
Parece-me que a saída do código será "meu nome é maa" (tudo ~ exceto ~ as duas últimas letras), que não é o que a pergunta pediu, se entendi corretamente.
ewino