所以我有这样的字符串:'5-2 7-1 8-9 7-4 1-3 1-0 2-8 8-0 6-9'
,它总是以这种形式存在(数字,破折号,数字,空格,数字,破折号,.)
我想要做的是把它转换成一个整数数组: 5,2,7,1,8,.,9我有了这个解决方案
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!!
所以我就这么做了
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
,但我不知道为什么它会产生这个结果
发布于 2014-06-26 20:20:26
默认情况下,replace
方法只替换第一个匹配项。您需要使用一个正则表达式来替换所有它们:
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);
});
发布于 2014-06-26 20:21:27
.replace()
只替换第一个匹配项。使用regex并执行全局替换
numbers = str.replace(/-/g, ' ')....
发布于 2014-06-26 20:28:26
这里有个小摆设:http://jsfiddle.net/uYKV6/10/
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);
https://stackoverflow.com/questions/24439469
复制相似问题