Sunday, 4 March 2018

string - endsWith in JavaScript



How can I check if a string ends with a particular character in JavaScript?




Example: I have a string



var str = "mystring#";


I want to know if that string is ending with #. How can I check it?




  1. Is there a endsWith() method in JavaScript?


  2. One solution I have is take the length of the string and get the last character and check it.





Is this the best way or there is any other way?


Answer



UPDATE (Nov 24th, 2015):



This answer is originally posted in the year 2010 (SIX years back.) so please take note of these insightful comments:









ORIGINAL ANSWER:



I know this is a year old question... but I need this too and I need it to work cross-browser so... combining everyone's answer and comments and simplifying it a bit:



String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};




  • Doesn't create a substring

  • Uses native indexOf function for fastest results

  • Skip unnecessary comparisons using the second parameter of indexOf to skip ahead

  • Works in Internet Explorer

  • NO Regex complications







Also, if you don't like stuffing things in native data structure's prototypes, here's a standalone version:



function endsWith(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}






EDIT: As noted by @hamish in the comments, if you want to err on the safe side and check if an implementation has already been provided, you can just adds a typeof check like so:



if (typeof String.prototype.endsWith !== 'function') {
String.prototype.endsWith = function(suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
}

No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...