我刚刚审查了项目中的一些功能并发现了问题。
我在函数中有以下内容:
context = context.slice(-2);
这应该是获取字符串的最后一位,例如'something_2'返回的值应该是'_2'但是如果函数遇到'something_230',那么上面的代码假设只返回'30 '而不是'_230'。
var cleanItemId = function(context)
{
context = context.slice(-2);
return context;
}
我认为这是一个大问题,但我不确定如何解决问题,我认为我需要一个reg表达式,有人能指出我正确的方向吗?
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:3)
您还不需要正则表达式。
var str = "something_230";
var pos = str.lastIndexOf("_");
var out = str.substr(pos); // _230
答案 1 :(得分:3)
我认为我需要一个reg表达式,有人能指出我正确的方向吗?
正则表达式可以使用,但您不一定需要。接近:
使用正则表达式。
var m = context.match(/_(\d+)$/);
if (m) {
// Use `m[1]` to get the digits
}
该表达式表示:“文字_
后跟一个或多个数字,后跟字符串的结尾,将数字捕获为捕获组。”
使用split('_')
并获取结果数组中的最后一个元素。
var m = context.split('_');
// Use `m[m.length - 1]` to get the digits
使用lastIndexOf
查找_
,然后抓取字符串的其余部分。
var x = context.lastIndexOf('_');
if (x !== -1) {
// Use `context.substring(x + 1)` to get the digits
}
答案 2 :(得分:0)
创建一个函数似乎没用:
context = context.replace(/^.*(_\d+)$/, '$1');
这个也有效:
context = context.replace(/^.*(?=_\d+$)/, '');
如果你想要第一部分:
context = context.replace(/_\d+$/, '');
此处的详细信息:http://www.javascriptkit.com/javatutors/redev.shtml。
答案 3 :(得分:0)
context = context.split('_')[1];
如果你确定字符串中最后有一个_
。如果您还需要将字符串解析为数字:
var num = +context.split('_')[1];