Come posso ottenere gli ultimi caratteri di una stringa


739

io ho

var id="ctl03_Tabs1";

Utilizzando JavaScript, come posso ottenere gli ultimi cinque caratteri o l'ultimo carattere?


6
Per ottenere l'ultimo personaggio l'opzione migliore sarebbe id.charAt (id.length-1)
Dilhan Jayathilake,

64
Nota per i lettori: assicurati di leggere oltre la prima risposta, in particolare quella di @Terence.
Offirmo,

Risposte:


1085

EDIT: come altri hanno sottolineato, utilizzare slice(-5)invece di substr. Tuttavia, vedi la .split().pop()soluzione in fondo a questa risposta per un altro approccio.

Risposta originale:

Ti consigliamo di utilizzare il metodo stringa JavaScript .substr()combinato con la .lengthproprietà.

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

Ciò ottiene i caratteri a partire da id.length - 5 e, poiché il secondo argomento per .substr () viene omesso, continua fino alla fine della stringa.

Puoi anche usare il .slice()metodo come altri hanno sottolineato di seguito.

Se stai semplicemente cercando di trovare i caratteri dopo il trattino basso, puoi usare questo:

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

Ciò divide la stringa in un array sul carattere di sottolineatura e quindi "elimina" l'ultimo elemento dell'array (che è la stringa desiderata).


5
La prima soluzione può essere resa più breve e più veloce, vedi la mia risposta di seguito. Tuttavia, sono d'accordo con l'idea divisa e pop in questa particolare situazione.
Terence,

3
Rispetto a .slice (-5) e .substr (lunghezza - 5), .split().pop()è un grande successo in termini di prestazioni. Se questo è qualcosa che stai usando in un ciclo e le prestazioni sono fondamentali, ti consigliamo di tenerlo a mente.
nwayve,

7
Nel tuo test, .split().pop()sono ancora 5 milioni di operazioni al secondo. Non è un problema di prestazioni fino a quando non è un problema di prestazioni. ;)
Jamon Holmgren,

1
@HutchMoore Hai ragione. Ho modificato la mia risposta per menzionare che sliceè un'opzione migliore a questo punto.
Jamon Holmgren,

1
Se stai cercando di applicare sliceo substrsu un numero (int), convertilo prima in stringa. Ad esempiomyVar.toString().slice(-5)
dnns,

804

Non usare .substr(). Utilizzare .slice()invece il metodo perché è compatibile con più browser (vedere IE).

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

substr () con valore negativo non funzionante in IE


6
Sì slice accetta valori negativi che è fantastico! slice()riferimento: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Offirmo

3
Preferisco questa risposta, sebbene quella accettata funzioni bene.
Dave Watts,

3
Questa dovrebbe essere la risposta, usare slice in questo modo è anche più performante: jsperf.com/slice-vs-substr-and-length
thevinchi

Chrome 55 sembra pensare che il substr sia più veloce del 20%
fantapop il

6
Presumo che slice funzionerà solo se è coerente? e se la fine fosse _Tabs15? slice (-5) afferrerebbe solo abs15? split / pop funziona molto meglio per varie lunghezze ...
Brian Ramsey,

66

È possibile utilizzare il metodo substr () con una posizione iniziale negativa per recuperare gli ultimi n caratteri. Ad esempio, questo ottiene gli ultimi 5:

var lastFiveChars = id.substr(-5);

Risposta migliore e breve. Non è necessario conoscere la lunghezza della stringa originale (per i browser correnti, quindi escludiamo IE)
Thanh Trung,

60

Ottenere l'ultimo carattere è facile, poiché puoi trattare le stringhe come un array:

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

Per ottenere una sezione di una stringa, è possibile utilizzare la funzione substr o la funzione 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

La differenza tra substre substringè come viene trattato il secondo parametro (facoltativo). In substr, è la quantità di caratteri dall'indice (il primo parametro). In substring, è l'indice di dove dovrebbe finire la divisione dei caratteri.


1
hai un errore di battitura che dovrebbe essere substr
George

24

Lo script seguente mostra il risultato per ottenere gli ultimi 5 caratteri e l'ultimo 1 carattere in una stringa utilizzando JavaScript:

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

Produzione :

Tabs1 // Hai 5 caratteri

1 // Hai 1 personaggio


4
Non compatibile con IE, vedi la mia risposta.
Terence,


7

Non è necessario utilizzare il substrmetodo per ottenere un singolo carattere di una stringa!

prendendo l'esempio di Jamon Holmgren possiamo cambiare il metodo substr e semplicemente specificare la posizione dell'array:

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

5

La funzione Substr consente di utilizzare un segno meno per ottenere l'ultimo carattere.

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

È molto flessibile. Per esempio:

// 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

Un modo sarebbe usare slice, come seguire:

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

quindi il valore di tempsarebbe "Tabs1".


3

Se vuoi solo l'ultimo carattere o qualsiasi altro personaggio in posizione conosciuta, puoi semplicemente trasformare la stringa come un array! - le stringhe sono iterabili in javascript -

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

Tuttavia, se hai bisogno di più di un solo personaggio, utilizzare la giunzione è efficace

x.slice(-5);      //world

Per quanto riguarda il tuo esempio

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

Per estrarre l'id puoi facilmente usare split + pop

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

Questo restituirà l'id, o indefinito se nessun id era dopo "rating_elemento" :)


2

Supponendo di confrontare la sottostringa con la fine di un'altra stringa e di utilizzare il risultato come un valore booleano, è possibile estendere la classe String per ottenere questo risultato:

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

Consentendo di eseguire le seguenti operazioni:

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

Ho trovato questa domanda e attraverso alcune ricerche ho scoperto che questo è il modo più semplice per ottenere l'ultimo personaggio.

Come altri hanno già detto e aggiunto per completezza per ottenere gli ultimi 5:

var last5 = id.substr(-5);

0

Questo rimuoverà la virgola se è l'ultimo carattere nella stringa.

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

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

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

}

4
Questo non ha quasi nulla a che fare con la domanda originale.
silasjmatson,

0

In realtà ho il seguente problema e questo è il modo in cui l'ho risolto con l'aiuto della risposta sopra, ma un approccio diverso nell'estrazione dell'id forma un elemento di input.

Ho allegato un input archiviato con un

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

E, quando si fa clic su quel pulsante, voglio estrarre solo l'id (che è il numero) o l'ID php ($ id) .

Quindi ecco cosa faccio.

 $('.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

Ultimo 5

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

Scorso

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


Per il primo esempio, passare charAta substr. Questo charAtottiene il quinto dall'ultimo .
Regolare Joe,

-1

Sono sicuro che funzionerà ...

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

Il valore di extensionsarà".pdf"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.