How can I get last characters of a string

Javascript

Javascript Problem Overview


I have

var id="ctl03_Tabs1";

Using JavaScript, how might I get the last five characters or last character?

Javascript Solutions


Solution 1 - Javascript

EDIT: As others have pointed out, use slice(-5) instead of substr. However, see the .split().pop() solution at the bottom of this answer for another approach.

Original answer:

You'll want to use the Javascript string method .substr() combined with the .length property.

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

This gets the characters starting at id.length - 5 and, since the second argument for .substr() is omitted, continues to the end of the string.

You can also use the .slice() method as others have pointed out below.

If you're simply looking to find the characters after the underscore, you could use this:

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

This splits the string into an array on the underscore and then "pops" the last element off the array (which is the string you want).

Solution 2 - Javascript

Don't use .substr(). Use the .slice() method instead because it is cross browser compatible (see IE).

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

https://stackoverflow.com/questions/6918943/substr-with-negative-value-not-working-in-ie

Solution 3 - Javascript

You can use the substr() method with a negative starting position to retrieve the last n characters. For example, this gets the last 5:

var lastFiveChars = id.substr(-5);

Solution 4 - Javascript

Getting the last character is easy, as you can treat strings as an array:

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

To get a section of a string, you can use the substr function or the substring function:

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

The difference between substr and substring is how the second (optional) parameter is treated. In substr, it's the amount of characters from the index (the first parameter). In substring, it's the index of where the character slicing should end.

Solution 5 - Javascript

Following script shows the result for get last 5 characters and last 1 character in a string using JavaScript:

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

Output :

>Tabs1 // Got 5 characters > >1 // Got 1 character

Solution 6 - Javascript

const r = '6176958e92d42422203a3c58'; 
r.slice(-4)

results '3c58'

r.slice(-1)

results '8'

Solution 7 - Javascript

One way would be using slice, like follow:

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

so the value of temp would be "Tabs1".

Solution 8 - Javascript

Check out the substring function.

To get the last character:

id.substring(id.length - 1, id.length);

Solution 9 - Javascript

The Substr function allows you to use a minus to get the last character.

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

It's very flexible. For example:

// 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"

Solution 10 - Javascript

There is no need to use substr method to get a single char of a string!

taking the example of Jamon Holmgren we can change substr method and simply specify the array position:

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

Solution 11 - Javascript

Performance

Today 2020.12.31 I perform tests on MacOs HighSierra 10.13.6 on Chrome v87, Safari v13.1.2 and Firefox v84 for chosen solutions for getting last N characters case (last letter case result, for clarity I present in separate answer).

Results

For all browsers

  • solution D based on slice is fast or fastest
  • solution G is slowest

enter image description here

Details

I perform 2 tests cases:

  • when string has 10 chars - you can run it HERE
  • when string has 1M chars - you can run it HERE

Below snippet presents solutions A B C D E F G (my)

//https://stackoverflow.com/questions/5873810/how-can-i-get-last-characters-of-a-string

// https://stackoverflow.com/a/30916653/860099
function A(s,n) {
  return s.substr(-n)
}

// https://stackoverflow.com/a/5873890/860099
function B(s,n) {
  return s.substr(s.length - n)
}

// https://stackoverflow.com/a/17489443/860099
function C(s,n) {
  return s.substring(s.length - n, s.length);
}

// https://stackoverflow.com/a/50395190/860099
function D(s,n) {
  return s.slice(-n);
}

// https://stackoverflow.com/a/50374396/860099
function E(s,n) {
  let i = s.length-n;
  let r = '';
  while(i<s.length) r += s.charAt(i++);
  return r
}

// https://stackoverflow.com/a/17489443/860099
function F(s,n) {
  let i = s.length-n;
  let r = '';
  while(i<s.length) r += s[i++];
  return r
}

// my
function G(s,n) {
  return s.match(new RegExp(".{"+n+"}$"));
}

// --------------------
// TEST
// --------------------

[A,B,C,D,E,F,G].map(f=> {  
  console.log(
    f.name + ' ' + f('ctl03_Tabs1',5)
  )})

This shippet only presents functions used in performance tests - it not perform tests itself!

And here are example results for chrome

enter image description here

Solution 12 - Javascript

If you just want the last character or any character at know position you can simply trat string as an array! - strings are iteratorable in javascript -

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

Yet if you need more than just one character then use splice is effective

x.slice(-5);      //world

Regarding your example

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

To extract id you can easily use split + pop

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

This will return the id, or undefined if no id was after 'rating_element' :)

Solution 13 - Javascript

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

I found this question and through some research I found this to be the easiest way to get the last character.

As others have mentioned and added for completeness to get the last 5:

var last5 = id.substr(-5);

Solution 14 - Javascript

Performance

Today 2020.12.31 I perform tests on MacOs HighSierra 10.13.6 on Chrome v87, Safari v13.1.2 and Firefox v84 for chosen solutions for getting last character case (last N letters case results, for clarity I present in separate answer).

Results

For all browsers

  • solutions D,E,F are quite-fast or fastest
  • solutions G,H are slowest

enter image description here

Details

I perform 2 tests cases:

  • when string has 10 chars - you can run it HERE
  • when string has 1M chars - you can run it HERE

Below snippet presents solutions A B C D E F G (my), H (my)

//https://stackoverflow.com/questions/5873810/how-can-i-get-last-characters-of-a-string

// https://stackoverflow.com/a/30916653/860099
function A(s) {
  return s.substr(-1)
}

// https://stackoverflow.com/a/5873890/860099
function B(s) {
  return s.substr(s.length - 1)
}

// https://stackoverflow.com/a/17489443/860099
function C(s) {
  return s.substring(s.length - 1, s.length);
}

// https://stackoverflow.com/a/50395190/860099
function D(s) {
  return s.slice(-1);
}

// https://stackoverflow.com/a/50374396/860099
function E(s) {  
  return s.charAt(s.length-1);
}

// https://stackoverflow.com/a/17489443/860099
function F(s) {  
  return s[s.length-1];
}

// my
function G(s) {
  return s.match(/.$/);
}

// my
function H(s) {
  return [...s].pop();
}

// --------------------
// TEST
// --------------------

[A,B,C,D,E,F,G,H].map(f=> {  
  console.log(
    f.name + ' ' + f('ctl03_Tabs1')
  )})

This shippet only presents functions used in performance tests - it not perform tests itself!

And here are example results for chrome

enter image description here

Solution 15 - Javascript

const id = 'ctl03_Tabs1';
id.at(-1); // Returns '1'

at supports negative integer to count back from the last string character.


Docs: String/at

Solution 16 - Javascript

You can exploit the string.length feature to get the last characters. See the below example:

let str = "hello";
console.log(str[str.length-1]);
// Output : 'o' i.e. Last character.

Similarly, you can use for loops to reverse the string using the above code.

Solution 17 - Javascript

Assuming you will compare the substring against the end of another string and use the result as a boolean you may extend the String class to accomplish this:

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

Allowing you to do the following:

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

Solution 18 - Javascript

To get the last character of a string, you can use the split('').pop() function.

const myText = "The last character is J";
const lastCharater = myText.split('').pop();
console.log(lastCharater); // J

It's works because when the split('') function has empty('') as parameter, then each character of the string is changed to an element of an array. Thereby we can use the pop() function which returns the last element of that array, which is, the 'J' character.

Solution 19 - Javascript

I actually have the following problem and this how i solved it by the help of above answer but different approach in extracting id form a an input element.

I have attached input filed with an

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

And , when that button clicked i want to extract the id(which is the number) or the php ID ($id) only.

So here what i do .

 $('.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
        });

Solution 20 - Javascript

This one will remove the comma if it is the last character in the string..

var str = $("#ControlId").val();
 
if(str.substring(str.length-1)==',') {
     
  var stringWithoutLastComma = str.substring(0,str.length-1);    

}

Solution 21 - Javascript

Last 5

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

Last

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

Solution 22 - Javascript

you can use slice

id.slice(-5);

Solution 23 - Javascript

I am sure this will work....

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

The value of extension will be ".pdf"

Solution 24 - Javascript

Here 2 examples that will show you always the last character

var id="ctl03_Tabs1";

console.log(id.charAt(id.length - 1)); 

console.log(id[id.length - 1]); 

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser695663View Question on Stackoverflow
Solution 1 - JavascriptJamon HolmgrenView Answer on Stackoverflow
Solution 2 - JavascriptTerenceView Answer on Stackoverflow
Solution 3 - Javascriptuser682701View Answer on Stackoverflow
Solution 4 - JavascriptZirakView Answer on Stackoverflow
Solution 5 - JavascripttamilView Answer on Stackoverflow
Solution 6 - Javascriptuser769371View Answer on Stackoverflow
Solution 7 - JavascriptKeivanView Answer on Stackoverflow
Solution 8 - JavascriptChewpersView Answer on Stackoverflow
Solution 9 - JavascriptAdam WhateversonView Answer on Stackoverflow
Solution 10 - JavascriptNello OllenView Answer on Stackoverflow
Solution 11 - JavascriptKamil KiełczewskiView Answer on Stackoverflow
Solution 12 - JavascriptZalabozaView Answer on Stackoverflow
Solution 13 - JavascriptAndrew MalloneeView Answer on Stackoverflow
Solution 14 - JavascriptKamil KiełczewskiView Answer on Stackoverflow
Solution 15 - Javascriptt_dom93View Answer on Stackoverflow
Solution 16 - JavascriptarbobView Answer on Stackoverflow
Solution 17 - JavascriptmikeborghView Answer on Stackoverflow
Solution 18 - JavascriptJonas BragaView Answer on Stackoverflow
Solution 19 - JavascriptDaniel AdenewView Answer on Stackoverflow
Solution 20 - Javascriptvijay yaragallView Answer on Stackoverflow
Solution 21 - JavascriptrajmobiappView Answer on Stackoverflow
Solution 22 - JavascriptMorteza AhmadiView Answer on Stackoverflow
Solution 23 - JavascriptJamil MoughalView Answer on Stackoverflow
Solution 24 - JavascriptMarcus UngaretteView Answer on Stackoverflow