Come selezionare gli ultimi due caratteri di una stringa


194

Devo selezionare gli ultimi due caratteri dalla variabile, che si tratti di cifre o lettere.

Per esempio:

var member = "my name is Mate";

Vorrei mostrare le ultime due lettere della stringa nella membervariabile.

Risposte:



23

Prova questo, nota che non è necessario specificare l'indice finale in substring.

var characters = member.substr(member.length -2);

La tua risposta originale era probabilmente più appropriata. Secondo i substrdocumenti di MDN , "JScript di Microsoft non supporta valori negativi per l'indice iniziale".

23

EDIT: 2020: usa string.slice(-2)come dicono gli altri - vedi sotto.

ora 2016 string.substr(-2)dovrebbe fare solo il trucco (non sottostringa (!))

tratto da MDN

Sintassi

str.substr(start[, length])

parametri

inizio

Posizione in cui iniziare l'estrazione dei caratteri. Se viene fornito un numero negativo, viene trattato come strLength + start dove strLength è la lunghezza della stringa (ad esempio, se start è -3 viene trattato come strLength - 3.) lunghezza Facoltativo. Il numero di caratteri da estrarre.

EDIT 2020

Dice MDN

Avvertenza: sebbene String.prototype.substr (...) non sia severamente deprecato (come in "rimosso dagli standard Web"), è considerato una funzione legacy e dovrebbe essere evitato quando possibile. Non fa parte del linguaggio JavaScript di base e potrebbe essere rimosso in futuro.


1
"Microsoft JScript non supporta valori negativi per l'indice iniziale. Per utilizzare questa funzione in JScript, è possibile utilizzare il seguente codice ..." - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… (considerando che per slice non hanno alcun polyfill: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… )
George Birbilis,

si noti che JScript non è all'interno del browser, è un linguaggio di scripting per lavorare principalmente con l'automazione di Windows Script Host (simile a VBScript), quindi è logico che a suo tempo non includesse tali metodi. Le versioni più recenti di Windows promuovono PowerShell, con un sintassi criptica. Ad ogni modo il commento era sul fatto che slice era un candidato migliore rispetto a substr nel caso di JScript, poiché supporta gli indici negativi docs.microsoft.com/en-us/previous-versions/windows/…
George Birbilis,

9

L'esempio seguente usa slice()con indici negativi

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'


5

Puoi provare

member.substr(member.length-2);

Hai perso member.length dal tuo indice di partenza :)
mattytommo,

Ah fico, ho aggiornato la mia risposta per riflettere, grazie TJ e Ibu :)
mattytommo

1
@TJCrowder: abbastanza sicuro che l'indice negativo come posizione iniziale non funziona per IE8 e inferiore.

1
@amnotiam: Grazie, molto bello saperlo! Ho appena testato , e abbastanza sicuro, non ha funzionato su IE7 o IE8 (e quindi presumibilmente non funzionerebbe su IE6). IE9 in modalità standard andava bene (ma non compatibile). Non lo uso mai substr, e ora vorrei poter trovare il thread in cui un po 'di confusione mi ha dato dei problemi (e in particolare non usando indici negativi) - Ora posso giustificarlo! :-)
TJ Crowder,

3

Se è un numero intero hai bisogno di una parte di ....

var result = number.toString().slice(-2);

2

A tale scopo, è necessario utilizzare la sottostringa, non jQuery.

Prova qualcosa del genere:

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

W3Schools (non ufficiale, ma occasionalmente utile): http://www.w3schools.com/jsref/jsref_substring.asp

Aggiunta del collegamento MDN come richiesto dal commentatore: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring


3
si prega di fornire collegamenti a una documentazione ufficiale come MSDN o MDN, non w3fools :)
jbabey

w3schools non è "ufficiale" ma generalmente ha informazioni affidabili. MSDN è ufficiale, ma è specifico per IE e non ha nulla a che fare con Firefox, Safari, ecc.
Matt

aggiunto il link al commento mentre lo stavi postando
Matt

1
var member = "my name is maanu";

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

alert(answer);

1
Cosa fa il codice? Si prega di scrivere una spiegazione di ciò che si ottiene.
DNKROZ,

3
Per essere onesti, la domanda è molto specifica su ciò che il codice deve fare, quindi una risposta che consiste (in sostanza) in una riga di codice è piuttosto autoesplicativa.
anaximander,

1
l'output del codice sarà 'nu'. Prendi gli ultimi 2 caratteri dalla parola.
Biju,

7
Mi sembra che l'output del codice sarà "my name is maa" (tutto ~ tranne ~ le ultime due lettere), che non è quello che la domanda ha posto, se l'ho capito correttamente.
ewino,
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.