具有反向索引的子串

Ric*_*cky 71 javascript string

如何从"xxx_456"中提取"456",其中xxx是无限长的?

And*_*y E 171

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

alert("xxx_456".slice(-3));
//-> 456
Run Code Online (Sandbox Code Playgroud)

slice方法(字符串) - MSDN
切片 - Mozilla开发人员中心

  • 最干净的解决方案. (5认同)
  • 完美答案. (4认同)
  • @user1429980 如果使用“反向”,您的意思是删除最后三位数字,它是“xxx_456”.slice(0, -3)` (2认同)

Psy*_*nic 71

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

如果它最后并不总是三位数(并用下划线分隔).如果结束分隔符并不总是下划线,那么您可以使用正则表达式:

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

  • @Phil:速度快得多,除非它被召唤数千次.在差异明显之前,你需要打电话数百万次. (7认同)

Dar*_*rov 24

方法允许你指定的开始和结束索引:

var str = "xxx_456";
var subStr = str.substring(str.length - 3, str.length);
Run Code Online (Sandbox Code Playgroud)


gho*_*g74 5

你可以将它拆分并获得最后一个元素

var string="xxx_456";
var a=string.split("_");
alert(a[1]); #or a.pop
Run Code Online (Sandbox Code Playgroud)


Koo*_*Inc 5

用于字符串末尾任意数量数字的简单正则表达式:

'xxx_456'.match(/\d+$/)[0]; //456
'xxx_4567890'.match(/\d+$/)[0]; //4567890
Run Code Online (Sandbox Code Playgroud)

或者确实使用 split/pop :

('yyy_xxx_45678901').split(/_/).pop(); //45678901
Run Code Online (Sandbox Code Playgroud)