¿Cómo obtener el último carácter de una cadena?

526

Cómo obtener el último carácter de la cadena:

"linto.yahoo.com."

El último caracter de esta cadena es "."

¿Cómo puedo encontrar esto?

PD de Linto
fuente
podría aceptar esta respuesta, ya que es la mejor y debe mostrarse primero.
Sharku

Respuestas:

995

Una alternativa elegante y corta, es el String.prototype.slice método.

Sólo por:

str.slice(-1);

Un índice de inicio negativo corta la cadena de length+index, a length, al ser índice -1, se extrae el último carácter:

"abc".slice(-1); // "c";
CMS
fuente
99
Nota al margen: las matrices también tienen un slice()método. - Su funcionalidad es conceptualmente similar (copias parciales) -------- (En caso de que esté leyendo el código y vea .slice())
Peter Ajtai
1
¿Qué quieres decir con una "cadena UTF-8"? La frase no tiene sentido. Sin embargo, las cadenas de JavaScript son bestias divertidas en sí mismas: son secuencias de valores enteros de 16 bits sin signo. Si la intención de su cadena es almacenar caracteres, entonces el código anterior devuelve el último valor de 16 bits, que no sería bonito si fuera la segunda parte de un par sustituto. Pero de nuevo, ¿qué quieres decir exactamente con "cadena UTF-8"? UTF-8 es un esquema de codificación que podría tener sentido si tuviera una matriz de bytes, pero no significa nada cuando se trata de cadenas. Sólo curioso.
Ray Toal
44
Voto negativo porque esto no responde la pregunta. Se supone que el usuario solo desea eliminar el carácter, pero ¿qué sucede si necesita capturar el último carácter y responder en función de lo que es? Las respuestas str.charAt () son las correctas.
gregtczap
66
@Egg, parece ser que la persona no trató mi ejemplo, str.slice(-1)en efecto obtener el último carácter de la cadena (como el PO es necesario), al igual que si hubiera utilizado str.charAt(str.length - 1), intenta: "abc".slice(-1). Estaba mostrando aquí un uso de String.prototype.slicecon un índice negativo. str.slice(-n)obtendrá los últimos ncaracteres de la cadena original como un nuevo valor de cadena. Más información: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
CMS
99
@CMS Tienes razón, tu método realmente toma el último carácter de la cadena sin recortarlo. Buen método elegante también. Por alguna razón, estaba pensando que iba a recortar esos caracteres y devolver una cadena recortada. Lo siento, me siento como un idiota por no intentarlo primero.
gregtczap
97

Uso charAt:

El método charAt () devuelve el carácter en el índice especificado en una cadena.

Puede usar este método junto con la lengthpropiedad de una cadena para obtener el último carácter de esa cadena.
Por ejemplo:

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

Rosquilla
fuente
64
str.charAt(str.length - 1)

Algunos navegadores le permiten (como una extensión no estándar) acortar esto para:

str[str.length - 1];
Matthew Flaschen
fuente
50

Puede lograr esto de diferentes maneras pero con un rendimiento diferente,

1. Usando la notación de corchetes:

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

Pero no se recomienda usar corchetes. Consulta los motivos aquí

2. charAt [índice]:

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

Esto es legible y más rápido entre otros. Es la forma más recomendada.

3. subcadena:

str.substring(str.length - 1);

4. rebanada:

str.slice(-1);

Es un poco más rápido que la subcadena.

Puedes consultar el rendimiento aquí

Con ES6:

Puedes usar str.endsWith("t");

Pero no es compatible con IE. Consulte más detalles sobre los extremos con aquí

Code_Mode
fuente
2
No es necesario exprimir el rendimiento en las máquinas actuales. Utiliza la solución más concisa. Mi voto está encendidostr.slice(-1);
avalancha1
1
No estoy seguro de cómo endsWithencaja aquí, eso hace algo completamente diferente.
John Montgomery
38

Utilice substr con el parámetro -1 :

"linto.yahoo.com". substr (-1);

es igual a "."

Nota:

Para extraer caracteres del final de la cadena, use un número de inicio negativo (esto no funciona en IE 8 y versiones anteriores).

Spikolynn
fuente
3
Parece que este es tan corto como slice (), me pregunto cuál es mejor y más rápido.
stramin
12

Una manera fácil de hacerlo es usar esto :)

var word = "waffle"
word.endsWith("e")
Connie
fuente
1
Agradable y simple +1
Julian
1
Muy buena adición a ES6 pero no funciona en IE si tiene que soportarlo, sin embargo, se puede rellenar .
sanjsanj
No veo cómo esto responde a la pregunta en absoluto, obtener el último carácter de una cadena es completamente diferente de verificar si coincide con un carácter específico.
John Montgomery
8

Puedes obtener el último personaje como este:

var lastChar=yourString.charAt(yourString.length-1);
Colin Hebert
fuente
4

Use la función JavaScript CharAt para obtener un carácter en una posición determinada con índice 0. Usa la longitud para saber cuánto mide la cadena. Desea el último carácter, así que es longitud - 1. Ejemplo:

var word = "linto.yahoo.com.";
var last = word.charAt(word.length - 1);
alert('The last character is:' + last);
Adán
fuente
4
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];
Salar
fuente
Si bien este fragmento de código puede resolver la pregunta, incluir una explicación realmente ayuda a mejorar la calidad de su publicación. Recuerde que está respondiendo la pregunta para los lectores en el futuro, y que esas personas podrían no conocer los motivos de su sugerencia de código. Por favor, también trate de no saturar su código con comentarios explicativos, ¡esto reduce la legibilidad tanto del código como de las explicaciones!
kayess
0

Puedes usar este sencillo método ES6

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


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

Esto funcionará en todos los navegadores.

vdegenne
fuente
0

Puedes usar lo siguiente. En este caso del último personaje es una exageración, pero para una subcadena, es útil:

var word = "linto.yahoo.com.";
var last = ".com.";
if (word.substr(-(last.length)) == last)
alert("its a match");
Gauravsa
fuente
-1
>Try this...     

console.log("linto.yahoo.com.".charAt("linto.yahoo.com.".length-1));
Vishal
fuente