Como posso obter os últimos caracteres de uma string


739

eu tenho

var id="ctl03_Tabs1";

Usando JavaScript, como posso obter os últimos cinco caracteres ou o último caractere?


6
Para obter último caractere a melhor opção seria id.charAt (id.length-1)
Dilhan Jayathilake

64
Nota aos leitores: não deixe de ler a primeira resposta, principalmente a do @Terence.
Offirmo

Respostas:


1085

EDIT: Como outros já apontaram, use em slice(-5)vez de substr. No entanto, veja a .split().pop()solução na parte inferior desta resposta para outra abordagem.

Resposta original:

Você desejará usar o método de string Javascript .substr()combinado com a .lengthpropriedade

var id = "ctl03_Tabs1";
var lastFive = id.substr(id.length - 5); // => "Tabs1"
var lastChar = id.substr(id.length - 1); // => "1"

Isso obtém os caracteres começando em id.length - 5 e, como o segundo argumento para .substr () é omitido, continua até o final da string.

Você também pode usar o .slice()método como outros indicaram abaixo.

Se você simplesmente procura encontrar os caracteres após o sublinhado, você pode usar o seguinte:

var tabId = id.split("_").pop(); // => "Tabs1"

Isso divide a string em uma matriz no sublinhado e, em seguida, "exibe" o último elemento da matriz (que é a string que você deseja).


5
A primeira solução pode ser reduzida e mais rápida, veja minha resposta abaixo. No entanto, eu concordo com a idéia de divisão e pop nessa situação específica.
Terence

3
Comparado com .slice (-5) e .substr (comprimento - 5), .split().pop()é um grande sucesso de desempenho. Se isso é algo que você está usando em loop e o desempenho é crítico, lembre-se disso.
Nvlve

7
Em seu teste, .split().pop()ainda são 5 milhões de operações por segundo. Não é um problema de desempenho até que seja um problema de desempenho. ;)
Jamon Holmgren

1
@HutchMoore Você está correto. Eu editei minha resposta para mencionar que sliceé uma opção melhor neste momento.
Jamon Holmgren 29/10

1
Se você estiver tentando aplicar sliceou substrem um número (int), converta-o em string primeiro. Por exemplomyVar.toString().slice(-5)
dnns

804

Não use .substr(). Use o .slice()método porque é compatível com vários navegadores (consulte IE).

const id = "ctl03_Tabs1";
console.log(id.slice(id.length - 5)); //Outputs: Tabs1
console.log(id.slice(id.length - 1)); //Outputs: 1

substr () com valor negativo não funcionando no IE


6
Sim, a fatia aceita valores negativos, o que é ótimo! slice()referência: developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/…
Offirmo 30/10/13

3
Prefiro esta resposta, embora a aceita funcione perfeitamente.
Dave Watts

3
Esta deve ser a resposta, utilizando fatia desta forma também é mais alto desempenho: jsperf.com/slice-vs-substr-and-length
thevinchi

Chrome 55 parece pensar substr é 20% mais rápido
fantapop

6
Presumo fatia só funcionará se for consistente? e se o fim fosse _Tabs15? fatia (-5) só pegaria abs15? trabalhos de grupo / pop muito melhor para comprimentos variaram ...
Brian Ramsey

66

Você pode usar o método substr () com uma posição inicial negativa para recuperar os últimos n caracteres. Por exemplo, isso recebe os últimos 5:

var lastFiveChars = id.substr(-5);

Melhor e resposta curta. Não é necessário saber o comprimento da string original (para navegadores atuais, excluímos o IE)
Thanh Trung

60

Obter o último caractere é fácil, pois você pode tratar as strings como uma matriz:

var lastChar = id[id.length - 1];

Para obter uma seção de uma sequência, você pode usar a função substr ou a função substring :

id.substr(id.length - 1); //get the last character
id.substr(2);             //get the characters from the 3rd character on
id.substr(2, 1);          //get the 3rd character
id.substr(2, 2);          //get the 3rd and 4th characters

A diferença entre substre substringé como o segundo parâmetro (opcional) é tratado. Em substr, é a quantidade de caracteres do índice (o primeiro parâmetro). Em substring, é o índice de onde a fatia de caracteres deve terminar.


1
você tem um erro de digitação susbstr deve ser substr
George

24

O script a seguir mostra o resultado para obter os últimos 5 caracteres e o último 1 caractere em uma string usando JavaScript:

var testword='ctl03_Tabs1';
var last5=testword.substr(-5); //Get 5 characters
var last1=testword.substr(-1); //Get 1 character

Resultado :

Tabs1 // Tem 5 caracteres

1 // Obteve 1 caractere


4
Não é compatível com o IE, veja minha resposta.
Terence


7

Não é necessário usar o substrmétodo para obter um único caractere de uma string!

tomando o exemplo de Jamon Holmgren, podemos alterar o método substr e simplesmente especificar a posição do array:

var id = "ctl03_Tabs1";
var lastChar = id[id.length - 1]; // => "1"

5

A função Substr permite que você use um sinal de menos para obter o último caractere.

var string = "hello";
var last = string.substr(-1);

É muito flexível. Por exemplo:

// Get 2 characters, 1 character from end
// The first part says how many characters
// to go back and the second says how many
// to go forward. If you don't say how many
// to go forward it will include everything
var string = "hello!";
var lasttwo = string.substr(-3,2);
// = "lo"

4

Uma maneira seria usar slice, como segue:

var id="ctl03_Tabs1";
var temp=id.slice(-5);

então o valor de tempseria "Tabs1".


3

Se você quer apenas o último caractere ou qualquer caractere na posição conhecida, pode simplesmente tratar a string como uma matriz! - seqüências de caracteres são iteráveis ​​em javascript -

Var x = "hello_world";
 x[0];                    //h
 x[x.length-1];   //d

No entanto, se você precisar de mais de um caractere, use a emenda.

x.slice(-5);      //world

Em relação ao seu exemplo

"rating_element-<?php echo $id?>"

Para extrair identificação, você pode facilmente usar split + pop

Id= inputId.split('rating_element-')[1];

Isso retornará o ID, ou indefinido, se nenhum ID for posterior a 'rating_element' :)


2

Supondo que você compare a substring com o final de outra string e use o resultado como um booleano, você pode estender a classe String para fazer isso:

String.prototype.endsWith = function (substring) {
  if(substring.length > this.length) return false;
  return this.substr(this.length - substring.length) === substring;
};

Permitindo que você faça o seguinte:

var aSentenceToPonder = "This sentence ends with toad"; 
var frogString = "frog";
var toadString = "toad";
aSentenceToPonder.endsWith(frogString) // false
aSentenceToPonder.endsWith(toadString) // true

1
var id="ctl03_Tabs1";
var res = id.charAt(id.length-1);

Eu encontrei essa pergunta e, através de algumas pesquisas, descobri que essa é a maneira mais fácil de obter o último caractere.

Como outros já mencionaram e acrescentaram para obter os últimos 5:

var last5 = id.substr(-5);

0

Este removerá a vírgula se este for o último caractere da string.

var str = $("#ControlId").val();

if(str.substring(str.length-1)==',') {

  var stringWithoutLastComma = str.substring(0,str.length-1);    

}

4
Isso quase não tem relação com a questão original.
silasjmatson

0

Na verdade, tenho o seguinte problema e é assim que eu o resolvi com a ajuda da resposta acima, mas com uma abordagem diferente na extração de um formulário de identificação.

Anexei entrada arquivada com um

id="rating_element-<?php echo $id?>"

E, quando esse botão clicou, quero extrair o id (que é o número) ou o php ID ($ id) .

Então aqui o que eu faço.

 $('.rating').on('rating.change', function() {
            alert($(this).val());
           // console.log(this.id);
           var static_id_text=("rating_element-").length;       
           var product_id =  this.id.slice(static_id_text);       //get the length in order to deduct from the whole string    
          console.log(product_id );//outputs the last id appended
        });

0

Últimos 5

var id="ctl03_Tabs1";
var res = id.charAt(id.length-5)
alert(res);

Último

   
 var id="ctl03_Tabs1";
 var res = id.charAt(id.length-1)
alert(res);


Para o primeiro exemplo, altere charAtpara substr. Isso charAté o quinto da última .
Regular Joe

-1

Tenho certeza que isso vai funcionar ....

var string1="myfile.pdf"
var esxtenion=string1.substr(string1.length-4)

O valor de extensionserá".pdf"

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.