一尘不染

用逗号分隔字符串,但使用Javascript忽略双引号内的逗号

javascript

我正在寻找[a, b, c, "d, e, f", g, h]将其转换为6个元素的数组:a,b,c,“
d,e,f”,g,h。我正在尝试通过Javascript执行此操作。这是我到目前为止所拥有的:

str = str.split(/,+|"[^"]+"/g);

但是现在,它会将双引号中的所有内容都分割开了,这是不正确的。

编辑:好的,抱歉,我对这个问题的措辞很差。给我一个字符串而不是数组。

var str = 'a, b, c, "d, e, f", g, h';

我想使用“ split”功能将 转换为数组。


阅读 509

收藏
2020-05-01

共1个答案

一尘不染

这就是我要做的。

var str = 'a, b, c, "d, e, f", g, h';
var arr = str.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g);
/* will match:

    (
        ".*?"       double quotes + anything but double quotes + double quotes
        |           OR
        [^",\s]+    1 or more characters excl. double quotes, comma or spaces of any kind
    )
    (?=             FOLLOWED BY
        \s*,        0 or more empty spaces and a comma
        |           OR
        \s*$        0 or more empty spaces and nothing else (end of string)
    )

*/
arr = arr || [];
// this will prevent JS from throwing an error in
// the below loop when there are no matches
for (var i = 0; i < arr.length; i++) console.log('arr['+i+'] =',arr[i]);
2020-05-01