具有反向索引的子string

如何从“xxx_456”中提取“456”,其中xxx的长度不确定?

 var str =“xxx_456”;
 var str_sub = str.substr(str.lastIndexOf(“_”)+ 1);

如果结尾不是三位数字(用下划线分隔)。 如果结尾分隔符不总是下划线,那么你可以使用正则expression式:

 var pat = /([0-9] {1,})$ /;
 var m = str.match(pat);

slice在IE和其他浏览器中工作得很好,它是规范的一部分,也是最有效的方法:

 alert("xxx_456".slice(-3)); //-> 456 

切片方法(string) – MSDN
片 – Mozilla开发人员中心

子string方法允许您指定开始和结束索引:

 var str = "xxx_456"; var subStr = str.substring(str.length - 3, str.length); 

你可以把它分开,并得到最后一个元素

 var string="xxx_456"; var a=string.split("_"); alert(a[1]); #or a.pop 
 alert("xxxxxxxxxxx_456".substr(-3)) 

警告:根据mdc ,不IE兼容

一个疯狂的正则expression式的方法

 "xxx_456".match(/...$/)[0] //456 

这是我的自定义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); 

此function适用于反向索引。

 String.prototype.reverse( ) { return Array.prototype.slice.call(this) .reverse() .join() .replace(/,/g,'') } 

使用反向string方法

 var str = "xxx_456" str = str.reverse() // 654_xxx str = str.substring(0,3) // 654 str = str.reverse() //456 

如果你的逆向方法返回string,然后链接一个更干净的解决scheme的方法。

简单的正则expression式,用于string末尾的任何数字:

 'xxx_456'.match(/\d+$/)[0]; //456 'xxx_4567890'.match(/\d+$/)[0]; //4567890 

或确实使用split / pop:

 ('yyy_xxx_45678901').split(/_/).pop(); //45678901