具有反向索引的子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