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

Javascript 如何从字符串中间解析数字,javascript,actionscript-3,apache-flex,flex3,Javascript,Actionscript 3,Apache Flex,Flex3,我需要解析字符串中的一些数字,我可以很容易地得到最后一个数字,但不知道如何可靠地得到字符串中间的数字。在这种情况下是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); }

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

num
将是字符串
“12”
null
,如果没有找到后跟“of”的数字

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

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

现在
nums
是一个数组,其中包含字符串
“99999999”
“12”
“99”
。(感谢epascarello提醒我,
match
返回一个带有的数组。)

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

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

num
将是字符串
“12”
null
,如果没有找到后跟“of”的数字

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

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

现在
nums
是一个数组,其中包含字符串
“99999999”
“12”
“99”
。(感谢epascarello提醒我,
match
返回带有的数组。)

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

var mystring = 'group 999999999 group-session-info 12 of 50';
var r = /\d+/g;
mystring.match(r)
最后一句将生成一个数组: ['99999999','12','50']

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

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

希望这有帮助。

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

var mystring = 'group 999999999 group-session-info 12 of 50';
var r = /\d+/g;
mystring.match(r)
最后一句将生成一个数组: ['99999999','12','50']

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

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

希望这能有所帮助。

如果项目始终采用提供的格式。我将使用空格字符进行拆分

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

如果项目始终采用提供的格式。我将使用空格字符进行拆分

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);

使用正则表达式简单,并使用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]))

仅显示正确的方式,但使用正确的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]))


数字和单词总是用空格隔开吗?@pm77-1是的,这是javascript还是actionscript的问题?请删除相关标签,因为两种语言完全不同。所有发布的答案都是javascript,这就是您需要的吗?@BotMaster我的实现将是Actionscript。由于语言的相似性,我添加了Javascript标记,基本上是为了吸引人们对我的问题的快速关注。我可以自己轻松地键入变量等。你有一个纯actionscript解决方案吗?我想,这有点不公平,因为给出的许多javascript解决方案都不适用于AS3。这些都是不同的语言,甚至你接受的答案也与as3不兼容。我以为有规则禁止这种做法?数字和单词总是用空格隔开吗?@pm77-1是的,这似乎是javascript或actionscript的问题?请删除相关标签,因为两种语言完全不同。所有发布的答案都是javascript,这就是您需要的吗?@BotMaster我的实现将是Actionscript。由于语言的相似性,我添加了Javascript标记,基本上是为了吸引人们对我的问题的快速关注。我可以自己轻松地键入变量等。你有一个纯actionscript解决方案吗?我想,这有点不公平,因为给出的许多javascript解决方案都不适用于AS3。这些都是不同的语言,甚至你接受的答案也与as3不兼容。我以为有规则禁止这种做法?我投了反对票。这只是解决方案的一部分,其余的呢?+非类型化变量。@BotMaster-根据所问问题,答案有效。Vince Lowe知道他正在处理一个字符串,并希望从提供的字符串中提取“12”。提取后他会做什么取决于他自己。如果他想成为一个整数,我已经更新了我的答案,告诉他怎么做。但是,我不同意你关于我的答案不完整的评论。这个实现在actionscript和javascript中都可以很好地工作,记住在actionscript中键入变量,正如BotMaster指出的那样<代码>变量num:int=parseInt(mystring.split(“”)[3])被否决。这只是解决方案的一部分,其余的呢?+非类型化变量。@BotMaster-根据所问问题,答案有效。Vince Lowe知道他正在处理一个字符串,并希望从提供的字符串中提取“12”。提取后他会做什么取决于他自己。如果他想成为一个整数,我已经更新了我的答案,告诉他怎么做。但是,我不同意你关于我的答案不完整的评论。这个实现在actionscript和javascript中都可以很好地工作,记住在actionscript中键入变量,正如BotMaster指出的那样<代码>变量num:int=parseInt(mystring.split(“”)[3])非类型化变量,与其他变量一样被否决。这是一种趋势,所以总是用逃避编译器检查的非类型化变量来显示答案吗?这会系统地为失败设置PO。@BotMaster:注意“
num
将是字符串
“12”
,“
nums
是一个数组,其中包含字符串
“999999999”
“12”
,以及
“99”
。”我将其留给OP使用他们最喜欢的从字符串转换为数字的方式(更准确地说,这是最适合他们任务的方式)。我没有“设置它们”。@BotMaster:此外,如果你想吹毛求疵,至少要把你的术语弄清楚