Comment sélectionner les deux derniers caractères d'une chaîne

206

Je dois sélectionner les deux derniers caractères de la variable, qu'il s'agisse de chiffres ou de lettres.

Par exemple:

var member = "my name is Mate";

Je voudrais afficher les deux dernières lettres de la chaîne dans la membervariable.

Mo.
la source

Réponses:

24

Essayez ceci, notez que vous n'avez pas besoin de spécifier l'index de fin dans substring.

var characters = member.substr(member.length -2);
mattytommo
la source
Votre réponse initiale était probablement plus appropriée. Selon la substrdocumentation de MDN , «le JScript de Microsoft ne prend pas en charge les valeurs négatives pour l'index de démarrage».
24

EDIT: 2020: utiliser string.slice(-2)comme d'autres disent - voir ci-dessous.

maintenant 2016 string.substr(-2)devrait juste faire l'affaire (pas de sous-chaîne (!))

extrait de MDN

Syntaxe

str.substr(start[, length])

Paramètres

début

Emplacement à partir duquel commencer l'extraction des caractères. Si un nombre négatif est donné, il est traité comme strLength + start où strLength est la longueur de la chaîne (par exemple, si start est -3, il est traité comme strLength - 3.) length Facultatif. Le nombre de caractères à extraire.

MODIFIER 2020

MDN dit

Attention: Bien que String.prototype.substr (…) ne soit pas strictement obsolète (comme dans «retiré des standards Web»), il est considéré comme une fonction héritée et doit être évité lorsque cela est possible. Il ne fait pas partie du langage JavaScript de base et peut être supprimé à l'avenir.

demi-bit
la source
1
"Le JScript de Microsoft ne prend pas en charge les valeurs négatives pour l'index de démarrage. Pour utiliser cette fonctionnalité dans JScript, vous pouvez utiliser le code suivant ..." - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/... (alors que pour la tranche, ils n'ont pas de polyfill: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… )
George Birbilis
notez que JScript n'est pas à l'intérieur du navigateur, c'est un langage de script pour travailler avec l'automatisation de Windows Script Host principalement (similaire à VBScript), il est donc logique qu'à l'époque, il n'incluait pas de telles méthodes.Les nouvelles versions de Windows promeuvent PowerShell syntaxe cryptique. Quoi qu'il en soit, le commentaire était que slice était meilleur candidat que substr dans le cas de JScript, car il prend en charge les indices négatifs docs.microsoft.com/en-us/previous-versions/windows/…
George Birbilis
13

L'exemple suivant utilise slice()avec des index négatifs

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
la source
6

Tu peux essayer

member.substr(member.length-2);
thecodeparadox
la source
Vous avez manqué member.length de votre index de départ :)
mattytommo
Ah cool, j'ai mis à jour ma réponse pour refléter, merci TJ et Ibu :)
mattytommo
1
@TJCrowder: À peu près sûr que l'indice négatif comme position de départ ne fonctionne pas pour IE8 et les versions inférieures.
1
@amnotiam: Merci, très bon à savoir! Je viens de tester , et bien sûr, je n'ai pas fonctionné sur IE7 ou IE8 (et donc probablement pas sur IE6). IE9 en mode standard était bien (mais pas compatible). Je ne l'utilise jamais substr, et maintenant j'aimerais pouvoir trouver le fil de discussion où un git suffisant m'a donné du fil à retordre (et en particulier à ne pas utiliser d'index négatifs) - je peux maintenant le justifier! :-)
TJ Crowder
3

Si c'est un entier, vous avez besoin d'une partie de ...

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

Vous devez utiliser une sous-chaîne, pas jQuery, pour ce faire.

Essayez quelque chose comme ceci:

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

W3Schools (pas officiel, mais parfois utile): http://www.w3schools.com/jsref/jsref_substring.asp

Ajout du lien MDN comme demandé par le commentateur: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring

Mat
la source
3
veuillez fournir des liens vers une documentation officielle telle que MSDN ou MDN, pas w3fools :)
jbabey
w3schools n'est pas "officiel" mais a généralement des informations fiables. MSDN est officiel, mais est spécifique à IE et n'a rien à voir avec Firefox, Safari, etc.
Matt
a ajouté le lien vers le commentaire pendant que vous posiez ceci
Matt
1
var member = "my name is maanu";

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

alert(answer);
Biju s
la source
1
Que fait le code? Veuillez écrire une explication de ce que cela permet.
DNKROZ
3
Pour être honnête, la question est très spécifique sur ce que le code doit faire, donc une réponse constituée (essentiellement) d'une ligne de code est assez explicite.
anaximander
1
la sortie du code sera «nu». Prenez les 2 derniers caractères du mot.
Biju du
7
Il me semble que le code produit sera "mon nom est maa" (tout ~ sauf ~ les deux dernières lettres), ce qui n'est pas ce que la question a posée, si je l'ai bien compris.
ewino
0

Le plus court:

str.slice(-2)

Exemple:

const str = "test";
const last2 = str.slice(-2);

console.log(last2);

poulets
la source