come ottenere l'ultimo carattere di una stringa?


526

Come ottenere l'ultimo carattere della stringa:

"linto.yahoo.com."

L'ultimo carattere di questa stringa è "."

Come posso trovarlo?


potresti accettare questa risposta, poiché è la migliore e dovrebbe essere visualizzata per prima.
Sharku,

Risposte:


995

Un'alternativa elegante e breve, è il String.prototype.slicemetodo.

Proprio da:

str.slice(-1);

Un indice di inizio negativo suddivide la stringa da length+index, a length, essendo indice -1, viene estratto l'ultimo carattere:

"abc".slice(-1); // "c";

9
Nota a margine: anche le matrici hanno un slice()metodo. - La loro funzionalità è concettualmente simile (copie parziali) -------- (Nel caso in cui tu stia leggendo il codice e vedi .slice())
Peter Ajtai

1
Cosa intendi con "stringa UTF-8"? La frase non ha senso. FWIW, tuttavia, le stringhe JavaScript sono stesse bestie divertenti: sono sequenze di valori interi senza segno a 16 bit. Se l'intento della tua stringa è di memorizzare i caratteri, il codice sopra restituisce l'ultimo valore a 16 bit, il che non sarebbe carino se fosse la seconda parte di una coppia surrogata. Ma ancora, cosa intendi esattamente per "stringa UTF-8"? UTF-8 è uno schema di codifica che potrebbe avere senso se si avesse un array di byte, ma non significa assolutamente nulla quando si tratta di stringhe. Solo curioso.
Ray Toal,

4
Sottovalutato perché questo non risponde alla domanda. Si presume che l'utente desideri semplicemente rimuovere il personaggio, ma cosa succede se è necessario acquisire l'ultimo personaggio e rispondere in base a ciò che è? Le risposte str.charAt () sono quelle corrette.
gregtczap,

6
@Egg, sembra che non hai provato il mio esempio, str.slice(-1)fa davvero ottenere l'ultimo carattere della stringa (come l'OP richiesto), proprio come se si è utilizzato str.charAt(str.length - 1), provare: "abc".slice(-1). Stavo mostrando qui un utilizzo di String.prototype.slicecon un indice negativo. str.slice(-n)otterrà gli ultimi ncaratteri della stringa originale come nuovo valore di stringa. Ulteriori informazioni: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
CMS

9
@CMS Hai ragione, il tuo metodo in realtà prende l'ultimo carattere della stringa senza tagliarlo. Anche un bel metodo elegante. Per qualche ragione stavo pensando che avrebbe tagliato quei caratteri e restituito una stringa tagliata. Mi dispiace, mi sento un idiota per non averlo provato prima.
gregtczap,

97

Utilizzare charAt:

Il metodo charAt () restituisce il carattere all'indice specificato in una stringa.

È possibile utilizzare questo metodo insieme alla lengthproprietà di una stringa per ottenere l'ultimo carattere di quella stringa.
Per esempio:

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)

Alcuni browser consentono (come estensione non standard) di accorciarlo per:

str[str.length - 1];

50

Puoi raggiungere questo obiettivo in modi diversi ma con prestazioni diverse,

1. Usando la notazione parentesi:

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

Ma non è consigliabile utilizzare le parentesi. Controlla i motivi qui

2. carattere [indice]:

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

Questo è leggibile e veloce tra gli altri. È il modo più raccomandato.

3. sottostringa:

str.substring(str.length - 1);

4. fetta:

str.slice(-1);

È leggermente più veloce della sottostringa.

Puoi controllare le prestazioni qui

Con ES6:

Puoi usare str.endsWith("t");

Ma non è supportato in IE. Controlla maggiori dettagli sulle estremità Con qui


2
Non è necessario eseguire una compressione delle prestazioni sulle macchine attuali. Usa la soluzione più concisa. Il mio voto è onstr.slice(-1);
valanga1

1
Non sono sicuro di come si endsWithadatta qui, che fa qualcosa di completamente diverso.
John Montgomery,

38

Usa substr con il parametro -1 :

"Linto.yahoo.com." Substr (-1).;

è uguale a "."

Nota:

Per estrarre i caratteri dalla fine della stringa, utilizzare un numero di inizio negativo (non funziona in IE 8 e precedenti).


3
Sembra che questo sia più corto di slice (), mi chiedo quale sia migliore e più veloce.
stramin

12

Un modo semplice per farlo è usare questo :)

var word = "waffle"
word.endsWith("e")

1
Simpatico e semplice +1
Julian,

1
Un'aggiunta davvero buona a ES6 ma non funziona in IE se devi supportarlo, ma può essere polifillato .
sanjsanj,

Non vedo come questo risponda alla domanda, ottenere l'ultimo carattere di una stringa è completamente diverso dal verificare se corrisponde a un carattere specifico.
John Montgomery,

8

Puoi ottenere l'ultimo carattere in questo modo:

var lastChar=yourString.charAt(yourString.length-1);

4

Utilizzare la funzione charAt JavaScript per ottenere un carattere in una determinata posizione con indice 0. Usa lunghezza per scoprire quanto è lunga la stringa. Vuoi l'ultimo carattere in modo che sia lunghezza - 1. Esempio:

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

Mentre questo frammento di codice può risolvere la domanda, inclusa una spiegazione aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro e che queste persone potrebbero non conoscere i motivi del tuo suggerimento sul codice. Cerca anche di non aggiungere il tuo codice a commenti esplicativi, ciò riduce la leggibilità sia del codice che delle spiegazioni!
kayess,

0

È possibile utilizzare questo semplice metodo ES6

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


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

Questo funzionerà in tutti i browser.


0

È possibile utilizzare quanto segue. In questo caso dell'ultimo personaggio è un overkill ma per una sottostringa, è utile:

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