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