所以,如果我有以下字符串:
'(01) Kyle Hall - Osc (04) Cygnus - Artereole (07) Forgemasters - Metalic (10) The Todd Terry Project - Back to the Beat (14) Broken Glass - Style of the Street'
我可以查看字符串并将字符串中的任何数字推送到数组,如下所示:
[01,04,07,10,14]
答案 0 :(得分:5)
使用正则表达式:
var numbers = str.match(/\d+/g);
这将导致["01", "04", "07", "10", "14"]
(字符串数组)。如果元素的类型对您很重要,您可以跟进.map(Number)
以转换为数字:
var reallyNumbers = str.match(/\d+/g).map(Number);
将导致[1, 4, 7, 10, 14]
。
请注意,map
在版本9之前的IE中不可用,因此根据您的compat要求,您可能需要填充。在MDN上有一个现成的。
答案 1 :(得分:1)
var str = '(01) Kyle Hall - Osc (04) Cygnus - Artereole (07) Forgemasters - Metalic (10) The Todd Terry Project - Back to the Beat (14) Broken Glass - Style of the Street';
var nums = str.match(/\d+/g);
nums.map(function (num) {
return parseInt(num, 10);
});
对于不支持Array.prototype.map
的浏览器,请使用以下代码:
var str = '(01) Kyle Hall - Osc (04) Cygnus - Artereole (07) Forgemasters - Metalic (10) The Todd Terry Project - Back to the Beat (14) Broken Glass - Style of the Street';
var nums = str.match(/\d+/g);
for (var i = 0; i < str.length; i++) {
str[i] = parseInt(str[i], 10);
}