使用JavaScript分割逗号分隔的字符串,但忽略分号之间的逗号

时间:2019-03-29 13:20:53

标签: javascript arrays regex sorting

所以我有这个字符串:

apple;banana;orange, kiwi;onion,strawberry, avocado

以上字符串应拆分为:

   apple
   banana
   orange, kiwi
   onion
   strawberry
   avocado

我找到了一个正则表达式函数,但它只将双引号“”

分开
   str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");

我试图用替换“”; ;

   str.split(",(?=(?:[^\;]*\;[^\;]*\;)*[^\;]*$)");

,但是当我替换为;时,它不起作用

2 个答案:

答案 0 :(得分:4)

如果不使用分号,则可以按分号或逗号分隔。

var string = 'apple;banana;orange, kiwi;onion,strawberry, avocado',
    array = string.split(/;\s*|,\s*(?!.*;)/);

console.log(array);

答案 1 :(得分:2)

const str = 'apple;banana;orange, kiwi;onion,strawberry, avocado';

console.log(
  str
  
    // split at each semicolon
    .split(';')
    
    // split at each comma, only for the first and last elements
    .map((x,i,arr) => (i==0 || i==arr.length-1) ? x.split(',') : [x])
    
    // merge the arrays
    .reduce((acc, cur) => [...acc, ...cur], [])

    // trim for clean result
    .map(x => x.trim())
    
)