How can I extract "456" from "xxx_456" where xxx is of indefinite length?
This question is related to
javascript
string
slice
works just fine in IE and other browsers, it's part of the specification and it's the most efficient method too:
alert("xxx_456".slice(-3));
//-> 456
slice Method (String) - MSDN
slice - Mozilla Developer Center
String.prototype.reverse( ) {
return Array.prototype.slice.call(this)
.reverse()
.join()
.replace(/,/g,'')
}
using a reverse string method
var str = "xxx_456"
str = str.reverse() // 654_xxx
str = str.substring(0,3) // 654
str = str.reverse() //456
if your reverse method returns the string then chain the methods for a cleaner solution.
Simple regex for any number of digits at the end of a string:
'xxx_456'.match(/\d+$/)[0]; //456
'xxx_4567890'.match(/\d+$/)[0]; //4567890
or use split/pop indeed:
('yyy_xxx_45678901').split(/_/).pop(); //45678901
here is my custom function
function reverse_substring(str,from,to){
var temp="";
var i=0;
var pos = 0;
var append;
for(i=str.length-1;i>=0;i--){
//alert("inside loop " + str[i]);
if(pos == from){
append=true;
}
if(pos == to){
append=false;
break;
}
if(append){
temp = str[i] + temp;
}
pos++;
}
alert("bottom loop " + temp);
}
var str = "bala_123";
reverse_substring(str,0,3);
This function works for reverse index.
The substring method allows you to specify start and end index:
var str = "xxx_456";
var subStr = str.substring(str.length - 3, str.length);
Although this is an old question, to support answer by user187291
In case of fixed length of desired substring I would use substr()
with negative argument for its short and readable syntax
"xxx_456".substr(-3)
For now it is compatible with common browsers and not yet strictly deprecated.
alert("xxxxxxxxxxx_456".substr(-3))
caveat: according to mdc, not IE compatible
you can just split it up and get the last element
var string="xxx_456";
var a=string.split("_");
alert(a[1]); #or a.pop
Also you can get the result by using substring
and lastIndexOf
-
alert("xxx_456".substring("xxx_456".lastIndexOf("_")+1));
A crazy regex approach
"xxx_456".match(/...$/)[0] //456
Source: Stackoverflow.com