JS - 如何使用比我想要的更多逗号分割字符串

时间:2016-01-05 22:23:28

标签: javascript

我有一个包含项目列表的字符串。列表中的项目包含表示数字的字符串。

var list = '"One","Two","3,842","3,549","3,653","4,443","3,994","3,935"'

我试着像这样分裂:

list.split(',')
// result: [""One"", ""Two"", ""3", "842"", ""3", "549"", ""3", "653"", ""4", "443"", ""3", "994"", ""3", "935""]

这不是我想要的。

我想:

["One","Two","3,842","3,549","3,653","4,443","3,994","3,935"]
// or even better:
["One", "Two", 3842, 3549, 3653, 4443, 3994, 3935]

如何正确地将此字符串拆分为上面的数组?

3 个答案:

答案 0 :(得分:4)

KVC Collection Operators

var list = '"One","Two","3,842","3,549","3,653","4,443","3,994","3,935"'
var split = JSON.parse("[" + list + "]");

答案 1 :(得分:4)

你只需要

list.split(',"').map(function(e) { 
  return e.replace(/"|,/g, '');
});

要确保,后跟",然后删除任何额外的",,结果将是:

["One", "Two", "3842", "3549", "3653", "4443", "3994", "3935"]

答案 2 :(得分:2)

为什么不匹配引号内的元素?

var list = '"One","Two","3,842","3,549","3,653","4,443","3,994","3,935"';
var elems = list.match(/"[^"]*"/g);

带有捕获组的较长版本(此版本没有额外的双引号):

var list = '"One","Two","3,842","3,549","3,653","4,443","3,994","3,935"',
    re = /"([^"]*)"/g,
    arr = [],
    result;

while(result = re.exec(list)){
        arr.push(result[1]);
}