Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript拆分逗号分隔的字符串,但忽略分号之间的逗号_Javascript_Arrays_Regex_Sorting - Fatal编程技术网

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

使用JavaScript拆分逗号分隔的字符串,但忽略分号之间的逗号,javascript,arrays,regex,sorting,Javascript,Arrays,Regex,Sorting,所以我有这个字符串: apple;banana;orange, kiwi;onion,strawberry, avocado 上述字符串应分为: apple banana orange, kiwi onion strawberry avocado 我找到了一个正则表达式函数,但它只拆分双引号“” 我试图将“”替换为 str.split(",(?=(?:[^\;]*\;[^\;]*\;)*[^\;]*$)"); 但当我用替换时,它不起作用 cons

所以我有这个字符串:

apple;banana;orange, kiwi;onion,strawberry, avocado
上述字符串应分为:

   apple
   banana
   orange, kiwi
   onion
   strawberry
   avocado
我找到了一个正则表达式函数,但它只拆分双引号“”

我试图将“”替换为

   str.split(",(?=(?:[^\;]*\;[^\;]*\;)*[^\;]*$)");
但当我用替换时,它不起作用

const str='apple;香蕉;橙子、猕猴桃;洋葱、草莓、鳄梨;
console.log(
str
//在每个分号处拆分
.split(“;”)
//在每个逗号处拆分,仅针对第一个和最后一个元素
.map((x,i,arr)=>(i==0 | | i==arr.length-1)?x.split(','):[x])
//合并数组
.reduce((acc,cur)=>[…acc,…cur],)
//修剪以获得干净的效果
.map(x=>x.trim())

)
如果分号后面没有,您可以用分号或逗号分隔

var string='apple;香蕉;橙子、猕猴桃;洋葱、草莓、鳄梨、,
array=string.split(/;\s*|,\s*(?!.*)/);

console.log(数组)洋葱、草莓、鳄梨部分的规则是什么。为什么这部分用逗号分开,而这部分“橙色,猕猴桃”不是?@NinaScholz
orange
kiwi
之间的逗号位于两个分号之间,根据标题,必须忽略。不适合这种情况的逗号应该分割数组。这就像写下预期的输出。为什么我要为此编写代码。@AZ_u我似乎不理解你的评论。请加上进一步的解释。好的一个奇怪的是,我在鳄梨的末尾加了一个分号,例如苹果;香蕉;橙子、猕猴桃;洋葱、草莓、鳄梨;输出是正确的,但在最后它将空字符串添加到数组中,如何忽略结尾分号?[“苹果”、“香蕉”、“橙子、猕猴桃”、“洋葱”、“草莓”、“鳄梨”和“”]在这种情况下,可以添加一个筛选器来删除空字符串,如
.filter(布尔值)
如果您希望忽略字符串末尾的分号,请遵循@NinaScholz answer。拆分(/;\s*|,\s*(?!*)/)。筛选(布尔值)感谢您的回答
   str.split(",(?=(?:[^\;]*\;[^\;]*\;)*[^\;]*$)");