Cómo seleccionar los dos últimos caracteres de una cadena

194

Necesito seleccionar los dos últimos caracteres de la variable, ya sean dígitos o letras.

Por ejemplo:

var member = "my name is Mate";

Me gustaría mostrar las dos últimas letras de la cadena en la membervariable.

Mes.
fuente

Respuestas:

23

Pruebe esto, tenga en cuenta que no necesita especificar el índice final en substring.

var characters = member.substr(member.length -2);
mattytommo
fuente
Su respuesta original probablemente fue más apropiada. Según los substrdocumentos de MDN , "JScript de Microsoft no admite valores negativos para el índice de inicio".
23

EDITAR: 2020: uso string.slice(-2)como otros dicen - ver más abajo.

ahora 2016 solo string.substr(-2)debería hacer el truco (no subcadena (!))

tomado de MDN

Sintaxis

str.substr(start[, length])

Parámetros

comienzo

Lugar donde comenzar a extraer caracteres. Si se da un número negativo, se trata como strLength + start donde strLength es la longitud de la cadena (por ejemplo, si start es -3, se trata como strLength - 3.) length Opcional. El número de caracteres para extraer.

EDITAR 2020

MDN dice

Advertencia: aunque String.prototype.substr (...) no está estrictamente en desuso (como en "eliminado de los estándares web"), se considera una función heredada y debe evitarse cuando sea posible. No es parte del lenguaje central de JavaScript y puede eliminarse en el futuro.

medio bit
fuente
1
"JScript de Microsoft no admite valores negativos para el índice de inicio. Para usar esta función en JScript, puede usar el siguiente código ..." - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… (mientras que para el segmento no tienen ningún polyfill: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… )
George Birbilis
tenga en cuenta que JScript no está dentro del navegador, es un lenguaje de secuencias de comandos para trabajar principalmente con la automatización de Windows Script Host (similar a VBScript), por lo que es lógico que en su momento no incluyera tales métodos. sintaxis críptica De todos modos, el comentario fue sobre rebanada siendo mejor candidato que substr en el caso de JScript, ya que admite índices negativos docs.microsoft.com/en-us/previous-versions/windows/…
George Birbilis
9

El siguiente ejemplo se usa slice()con índices negativos

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
fuente
5

Puedes probar

member.substr(member.length-2);
thecodeparadox
fuente
Te perdiste member.length de tu índice inicial :)
mattytommo
Ah genial, he actualizado mi respuesta para reflexionar, gracias TJ e Ibu :)
mattytommo
1
@TJCrowder: Estoy bastante seguro de que el índice negativo como posición inicial no funciona para IE8 y versiones inferiores.
1
@amnotiam: ¡ Gracias, muy bueno saberlo! Acabo de probar , y efectivamente , no funcionó en IE7 o IE8 (y presumiblemente no funcionaría en IE6). IE9 en modo estándar estaba bien (pero no es compatible). Nunca lo uso substr, y ahora desearía poder encontrar el hilo en el que algunos gitanos presumidos me hicieron pasar un mal rato (y en particular no usar índices negativos). ¡Ahora puedo justificarlo! :-)
TJ Crowder
3

Si es un número entero, necesitas una parte de ...

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

Debe usar la subcadena, no jQuery, para hacer esto.

Intenta algo como esto:

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

W3Schools (no oficial, pero ocasionalmente útil): http://www.w3schools.com/jsref/jsref_substring.asp

Agregar enlace MDN según lo solicitado por el comentarista: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring

Mate
fuente
3
proporcione enlaces a una documentación oficial como MSDN o MDN, no w3fools :)
jbabey
w3schools no es "oficial" pero generalmente tiene información confiable. MSDN es oficial, pero es específico de IE y no tiene nada que ver con Firefox, Safari, etc.
Matt
agregó el enlace al comentario mientras publicaba esto
Matt
1
var member = "my name is maanu";

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

alert(answer);
Biju s
fuente
1
¿Qué hace el código? Por favor escriba una explicación de lo que esto logra.
DNKROZ
3
Para ser justos, la pregunta es muy específica sobre lo que debe hacer el código, por lo que una respuesta que consiste (en esencia) en una línea de código se explica por sí misma.
anaximander
1
la salida del código será 'nu'. Tome los últimos 2 caracteres de la palabra.
Biju s
77
Me parece que la salida del código será "mi nombre es maa" (todo ~ excepto ~ las dos últimas letras), que no es lo que la pregunta preguntó, si lo entendí correctamente.
ewino