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