如何从字符串中间解析数字

How to parse number from middle of string

我需要从字符串中解析一些数字,我可以很容易地得到最后一个数字,但想知道如何可靠地得到字符串中间的数字。在这种情况下,数字 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

谢谢

您需要了解上下文,或者知道要查找多少个数字。

有上下文(例如,12 后面有 of):

var match = mystring.match(/(\d+) of/);
var num = match && match[1];

num 将是字符串 "12"null 如果没有找到后跟 "of" 的数字。

知道有多少个数字后,您只需抓取字符串中的所有数字即可:

var nums = mystring.match(/\d+/g);

现在 nums 是一个数组,其中包含字符串 "999999999""12""99"。 (感谢 epascarello 提醒我 match returns 一个带有 的数组。)

尝试使用正则表达式从字符串中提取所有数字

var mystring = 'group 999999999 group-session-info 12 of 50';
var r = /\d+/g;
mystring.match(r)

最后一句会产生一个数组: [ '999999999', '12', '50']

但目前数组中的每个元素都是一个字符串。使用 parseInt() 可以将它们变成数字。

希望对您有所帮助。

如果项目始终采用提供的格式。我会使用 space 字符拆分。

var mystring = 'group 999999999 group-session-info 12 of 50';
var num = parseInt(mystring.split(' ')[3]); // 4th item which is 12

简单的使用正则表达式并使用 map 将字符串数组转换为数字。

var mystring = 'group 999999999 group-session-info 12 of 50';
var nums = mystring.match(/\d+/g).map(Number);

只是为了展示正确的方法,但使用正确的 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]))