我需要从字符串中解析一些数字,我可以很容易地得到最后一个数字但是想知道如何可靠地获得数字中间字符串。在这种情况下,数字是12?
var mystring = 'group 999999999 group-session-info 12 of 50';
var i;
var num; //how to get num "12"
var numOf;
i= mystring.lastIndexOf(" ");
if (i != -1) {
numOf= mystring.substr(i);
}
alert(numOf); // = 50
由于
答案 0 :(得分:7)
尝试使用正则表达式从字符串中提取所有数字
var mystring = 'group 999999999 group-session-info 12 of 50';
var r = /\d+/g;
mystring.match(r)
最后一句会产生一个数组: [' 999999999',' 12',' 50' ]
但目前数组中的每个元素都是一个字符串。使用parseInt()可以将它们变成数字。
希望这有帮助。
答案 1 :(得分:5)
如果项目始终采用提供的格式。我会用空格字符分开。
var mystring = 'group 999999999 group-session-info 12 of 50';
var num = parseInt(mystring.split(' ')[3]); // 4th item which is 12
答案 2 :(得分:4)
您需要知道上下文,或知道要查找的数字。
使用上下文(例如,12
后面有of
):
var match = mystring.match(/(\d+) of/);
var num = match && match[1];
num
将是字符串"12"
或null
,如果没有数字后跟""被发现了。
知道有多少,你只需抓住字符串中的所有数字:
var nums = mystring.match(/\d+/g);
现在nums
是一个数组,其中包含"999999999"
,"12"
和"99"
字符串。 (感谢epascarello提醒我match
返回一个包含his excellent answer的数组。)
答案 3 :(得分:1)
使用正则表达式简单并使用map将字符串数组转换为数字。
var mystring = 'group 999999999 group-session-info 12 of 50';
var nums = mystring.match(/\d+/g).map(Number);
答案 4 :(得分:0)
只是为了显示正确的方法,但是使用正确的AS3代码而不是Javascript作为参考:
var mystring:String = 'group 999999999 group-session-info 12 of 50';
var reg:RegExp = /\d+/g;
var numbers:Array = mystring.match(reg);
trace(Number(numbers[0]))
trace(Number(numbers[1]))
trace(Number(numbers[2]))