首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析字符串中的数字并将它们推送到数组中。

解析字符串中的数字并将它们推送到数组中。
EN

Stack Overflow用户
提问于 2014-06-26 20:17:48
回答 3查看 51关注 0票数 0

所以我有这样的字符串:'5-2 7-1 8-9 7-4 1-3 1-0 2-8 8-0 6-9',它总是以这种形式存在(数字,破折号,数字,空格,数字,破折号,.)

我想要做的是把它转换成一个整数数组: 5,2,7,1,8,.,9我有了这个解决方案

代码语言:javascript
运行
复制
var str = '5-2 7-1 8-9 7-4 1-3 1-0 2-8 8-0 6-9';
numbers = str.replace('-', ' ').split(' ').map(function(entry) { return parseInt(entry); }); 
// ==> [ 5, 2, 7, 8, 7, 1, 1, 2, 8, 6 ] WTF!!

所以我就这么做了

代码语言:javascript
运行
复制
var str = '5-2 7-1 8-9 7-4 1-3 1-0 2-8 8-0 6-9';
numbers = str.split(' ').join('').split('-').join('').split('').map(function(num) {
 return parseInt(num); 
}); // ==> [ 5, 2, 7, 1, 8, 9, 7, 4, 1, 3, 1, 0, 2, 8, 8, 0, 6, 9 ] All good!

但是我不知道为什么第一个解决方案不起作用,我知道问题在于str.replace,但我不知道为什么它会产生这个结果

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-26 20:20:26

默认情况下,replace方法只替换第一个匹配项。您需要使用一个正则表达式来替换所有它们:

代码语言:javascript
运行
复制
var str = '5-2 7-1 8-9 7-4 1-3 1-0 2-8 8-0 6-9';
numbers = str.replace(/-/g, ' ').split(' ').map(function(entry) { 
//                       ^ The g flag makes the regex match all occurrences
    return parseInt(entry);
});
票数 1
EN

Stack Overflow用户

发布于 2014-06-26 20:21:27

.replace()只替换第一个匹配项。使用regex并执行全局替换

numbers = str.replace(/-/g, ' ')....

票数 0
EN

Stack Overflow用户

发布于 2014-06-26 20:28:26

这里有个小摆设:http://jsfiddle.net/uYKV6/10/

代码语言:javascript
运行
复制
var str, strArr, regex;

str = '5-2 7-1 8-9 7-4 1-3 1-0 2-8 8-0 6-9';
regex = new RegExp("-", 'g');
str = str.replace(regex, " ");
strArr = str.split(" ");
console.log(strArr);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24439469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档