如何使用正则表达式条件删除.split()中的空数组空格

时间:2017-10-09 09:51:01

标签: javascript regex

我正在尝试将以下字符串拆分为" Chan#:"用可选的逗号","就在"之前,陈#:"

Chan 0: 2.50 0.12 13.92 83.46,Chan 1: 2.58 85.92 2.47 9.03,Chan 2: 5.00 85.0 33.33 6.64,Chan 3: 0.00 0.00 14.41 85.59

我目前正在使用此正则表达式:

var x = values.value;
var v = x.split(/\b[,]?Chan\s+\d+:\s+([\s\d.]+)/g);
console.log(v.length);
console.log(v[0]);
console.log(v[1]);
console.log(v[2]);
console.log(v[3]);
console.log(v[4]);
console.log(v[5]);
console.log(v[6]);
console.log(v[7]);
console.log(v[8]);

预期输出是一个大小为4的数组,每个通道都有一个数组。相应的4个数字。但是我得到一个大小为9的数组:https://imgur.com/41Hs0cy

2 个答案:

答案 0 :(得分:0)

尝试Array#filter。使用有效参数重新创建数组



var x = 'Chan 0: 2.50 0.12 13.92 83.46,Chan 1: 2.58 85.92 2.47 9.03,Chan 2: 5.00 85.0 33.33 6.64,Chan 3: 0.00 0.00 14.41 85.59';
var v = x.split(/\b[,]?Chan\s+\d+:\s+([\s\d.]+)/g).filter(a=> a)
console.log(v.length);




答案 1 :(得分:0)

这样做:

var v = x.split(/\b[,]?Chan\s+\d+:\s+([\s\d.]+)/g).filter(x => x !== '');

阱,

.filter(x => x !== '')

过滤所有空的值