¿Cómo puedo obtener los últimos caracteres de una cadena?


739

yo tengo

var id="ctl03_Tabs1";

Usando JavaScript, ¿cómo podría obtener los últimos cinco caracteres o el último carácter?


66
Para obtener el último personaje, la mejor opción sería id.charAt (id.length-1)
Dilhan Jayathilake

64
Nota para los lectores: asegúrese de leer más allá de la primera respuesta, especialmente la de @Terence.
Offirmo

Respuestas:


1085

EDITAR: Como otros han señalado, use en slice(-5)lugar de substr. Sin embargo, vea la .split().pop()solución al final de esta respuesta para otro enfoque.

Respuesta original:

Querrá usar el método de cadena Javascript .substr()combinado con la .lengthpropiedad.

var id = "ctl03_Tabs1";
var lastFive = id.substr(id.length - 5); // => "Tabs1"
var lastChar = id.substr(id.length - 1); // => "1"

Esto hace que los caracteres comiencen en id.length - 5 y, dado que se omite el segundo argumento para .substr (), continúa hasta el final de la cadena.

También puede usar el .slice()método como otros han señalado a continuación.

Si simplemente está buscando encontrar los caracteres después del guión bajo, puede usar esto:

var tabId = id.split("_").pop(); // => "Tabs1"

Esto divide la cadena en una matriz en el guión bajo y luego "saca" el último elemento de la matriz (que es la cadena que desea).


55
La primera solución se puede hacer más corta y más rápida, vea mi respuesta a continuación. Sin embargo, estoy de acuerdo con la idea de dividir y pop en esta situación particular.
Terence

3
En comparación con .slice (-5) y .substr (longitud - 5), .split().pop()es un gran éxito de rendimiento. Si esto es algo que está utilizando en un bucle y el rendimiento es crítico, querrá tener esto en cuenta.
nwayve

77
En su prueba, .split().pop()sigue siendo 5 millones de operaciones por segundo. No es un problema de rendimiento hasta que sea un problema de rendimiento. ;)
Jamon Holmgren

1
@HutchMoore Estás en lo correcto. He editado mi respuesta para mencionar que slicees una mejor opción en este momento.
Jamon Holmgren

1
Si está intentando aplicar sliceo substren un número (int), conviértalo primero en una cadena. Por ejemplomyVar.toString().slice(-5)
dnns

804

No utilice .substr(). Utilice el .slice()método en su lugar porque es compatible con varios navegadores (consulte IE).

const id = "ctl03_Tabs1";
console.log(id.slice(id.length - 5)); //Outputs: Tabs1
console.log(id.slice(id.length - 1)); //Outputs: 1

substr () con valor negativo no funciona en IE


66
Sí, la rebanada acepta valores negativos, lo cual es genial. slice()referencia: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Offirmo

3
Prefiero esta respuesta, aunque la aceptada funciona bien.
Dave Watts

3
Esta debería ser la respuesta, usar el corte de esta manera también es más eficiente
thevinchi

Chrome 55 parece pensar que substr es un 20% más rápido
fantapop

66
¿Supongo que el corte solo funcionará si es consistente? ¿Y si el final fuera _Tabs15? rebanada (-5) solo agarraría abs15? split / pop funciona mucho mejor para longitudes variadas ...
Brian Ramsey

66

Puede usar el método substr () con una posición de inicio negativa para recuperar los últimos n caracteres. Por ejemplo, esto obtiene los últimos 5:

var lastFiveChars = id.substr(-5);

La mejor y corta respuesta. No es necesario conocer la longitud de la cadena original (para los navegadores actuales, por lo que excluimos IE)
Thanh Trung

60

Obtener el último carácter es fácil, ya que puede tratar las cadenas como una matriz:

var lastChar = id[id.length - 1];

Para obtener una sección de una cadena, puede usar la función substr o la función substring :

id.substr(id.length - 1); //get the last character
id.substr(2);             //get the characters from the 3rd character on
id.substr(2, 1);          //get the 3rd character
id.substr(2, 2);          //get the 3rd and 4th characters

La diferencia entre substry substringes cómo se trata el segundo parámetro (opcional). En substr, es la cantidad de caracteres del índice (el primer parámetro). En substring, es el índice de dónde debe terminar la división de caracteres.


1
tienes un error tipográfico susbstr debería ser substr
George

24

El siguiente script muestra el resultado para obtener los últimos 5 caracteres y el último 1 carácter en una cadena usando JavaScript:

var testword='ctl03_Tabs1';
var last5=testword.substr(-5); //Get 5 characters
var last1=testword.substr(-1); //Get 1 character

Salida:

Pestañas1 // Tiene 5 caracteres

1 // Tengo 1 personaje


44
No es compatible con IE, mira mi respuesta.
Terence


7

¡No es necesario utilizar el substrmétodo para obtener un solo carácter de una cadena!

tomando el ejemplo de Jamon Holmgren podemos cambiar el método substr y simplemente especificar la posición de la matriz:

var id = "ctl03_Tabs1";
var lastChar = id[id.length - 1]; // => "1"

5

La función Substr le permite usar un signo menos para obtener el último carácter.

var string = "hello";
var last = string.substr(-1);

Es muy flexible Por ejemplo:

// Get 2 characters, 1 character from end
// The first part says how many characters
// to go back and the second says how many
// to go forward. If you don't say how many
// to go forward it will include everything
var string = "hello!";
var lasttwo = string.substr(-3,2);
// = "lo"

4

Una forma sería usar slice, como sigue:

var id="ctl03_Tabs1";
var temp=id.slice(-5);

entonces el valor de tempsería "Tabs1".


3

Si solo desea el último carácter o cualquier carácter en la posición conocida, ¡simplemente puede trazar la cadena como una matriz! - las cadenas son iterables en javascript -

Var x = "hello_world";
 x[0];                    //h
 x[x.length-1];   //d

Sin embargo, si necesita más de un solo carácter, usar el empalme es efectivo

x.slice(-5);      //world

Con respecto a su ejemplo

"rating_element-<?php echo $id?>"

Para extraer la identificación, puede usar fácilmente split + pop

Id= inputId.split('rating_element-')[1];

Esto devolverá el id, o indefinido si no hay id después de 'rating_element' :)


2

Suponiendo que comparará la subcadena con el final de otra cadena y usará el resultado como un valor booleano, puede extender la clase de cadena para lograr esto:

String.prototype.endsWith = function (substring) {
  if(substring.length > this.length) return false;
  return this.substr(this.length - substring.length) === substring;
};

Permitiéndole hacer lo siguiente:

var aSentenceToPonder = "This sentence ends with toad"; 
var frogString = "frog";
var toadString = "toad";
aSentenceToPonder.endsWith(frogString) // false
aSentenceToPonder.endsWith(toadString) // true

1
var id="ctl03_Tabs1";
var res = id.charAt(id.length-1);

Encontré esta pregunta y, a través de algunas investigaciones, descubrí que esta era la forma más fácil de obtener el último personaje.

Como otros han mencionado y agregado para completar para obtener los últimos 5:

var last5 = id.substr(-5);

0

Éste eliminará la coma si es el último carácter de la cadena.

var str = $("#ControlId").val();

if(str.substring(str.length-1)==',') {

  var stringWithoutLastComma = str.substring(0,str.length-1);    

}

44
Esto casi no tiene relación con la pregunta original.
silasjmatson

0

De hecho, tengo el siguiente problema y así es como lo resolví con la ayuda de la respuesta anterior, pero con un enfoque diferente al extraer la identificación de un elemento de entrada.

He adjuntado una entrada presentada con un

id="rating_element-<?php echo $id?>"

Y, cuando ese botón hizo clic, quiero extraer la identificación (que es el número) o la identificación de php ($ identificación) solamente.

Entonces aquí lo que hago.

 $('.rating').on('rating.change', function() {
            alert($(this).val());
           // console.log(this.id);
           var static_id_text=("rating_element-").length;       
           var product_id =  this.id.slice(static_id_text);       //get the length in order to deduct from the whole string    
          console.log(product_id );//outputs the last id appended
        });

0

Últimos 5

var id="ctl03_Tabs1";
var res = id.charAt(id.length-5)
alert(res);

Último

   
 var id="ctl03_Tabs1";
 var res = id.charAt(id.length-1)
alert(res);


Para el primer ejemplo, cambie charAta substr. Eso charAtsaca el quinto del último .
Joe regular el

-1

Estoy seguro de que esto funcionará ...

var string1="myfile.pdf"
var esxtenion=string1.substr(string1.length-4)

El valor de extensionserá".pdf"

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.