¿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?

usuario695663
fuente
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
2
¿Posible duplicado de cómo obtener el último carácter de una cadena?
Stephan Weinhold

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).

Jamon Holmgren
fuente
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

Terence
fuente
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);
usuario682701
fuente
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.

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

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

Echa un vistazo a la función de subcadena .

Para obtener el último personaje:

id.substring(id.length - 1, id.length);
Masticadores
fuente
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"
Nello Ollen
fuente
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"
Adam Whateverson
fuente
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".

Keivan
fuente
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' :)

Zalaboza
fuente
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
mikeborgh
fuente
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);
Andrew Mallonee
fuente
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);    

}
vijay yaragall
fuente
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
        });
Daniel Adenew
fuente
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);

rajmobiapp
fuente
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"

Jamil Moughal
fuente