[英]How to split an array into single quotes and comma separated list in javascript
[英]How to split a comma separated list in javascript, but do not split anything inside quotes with null values
我有一个逗号分隔的列表,其中可能包含空白值,并且可能包含用双引号括起来的值,我不想拆分这些值。 我需要使用此拆分创建一个数组,以便稍后循环遍历它。
我尝试使用一些有效的匹配正则表达式,但它忽略了我拥有的任何 null 值。 我一直在尝试使用一些前瞻正则表达式,但我认为我的语法工作不正常,因为它返回一个长度为 1 的数组。
这是最接近显示我的目标的匹配代码
var s = 'To, Infinity, "And, Beyond",,Buzz Lightyear';
var array = s.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g);
这是仅返回数组长度为 1 的拆分语法
var s = 'To, Infinity, "And, Beyond",,Buzz Lightyear';
var array = s.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
通过匹配 function,我希望 output 为:
To
Infinity
And, Beyond
Buzz Lightyear
然而我的output其实是
To
Infinity
And, Beyond
Buzz Lightyear
这应该按照您的期望工作:
var s = 'To, Infinity, "And, Beyond",,Buzz Lightyear'; var array = s.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/); console.log(array);
由于您在问题中标记了 mirth,因此您可以使用内置的 mirth 解析器。 请注意,您的问题中的确切字符串将不起作用,因为在逗号之后和“And,Beyond”之前有一个空格。 如果您要引用 CSV 字段,则需要引用整个字段(否则引号将被视为值的一部分。)
var serializer = SerializerFactory.getSerializer('delimited');
var s = 'To,Infinity,"And, Beyond",,Buzz Lightyear';
var split = new XML(serializer.toXML(s));
for each (var col in split.row.children()) {
logger.info(col.toString());
}
编辑:我没有产生一个数组,因为你说你只需要它来循环,如上所示,但如果你仍然需要一个数组,你可以这样做:
var arr = [];
for each (var col in split.row.children()) {
arr.push(col.toString());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.