使用逗号拆分字符串,但忽略双引号内的逗号 - javascript

Posted

技术标签:

【中文标题】使用逗号拆分字符串,但忽略双引号内的逗号 - javascript【英文标题】:Split the string using comma but ignore the comma within double quotes - javascript 【发布时间】:2020-08-03 04:58:25 【问题描述】:

我知道,这个论坛之前已经问过这个问题 - Split a string by commas but ignore commas within double-quotes using javascript。但我的要求略有不同,这里已经问过了。很抱歉让您对我的问题感到困惑。

我有一个像下面这样的字符串 -

myString = " "123","ABC", "ABC,DEF", "GHI" "

这里我想用逗号分割这个字符串并将其存储到一个数组中,但忽略双引号中的逗号。这是我到目前为止所尝试的。

myArray.push(myString.replace(/"/g,"").split(","));

但我不确定如何忽略双引号内的 ','。有人可以帮忙吗?

这就是我的输出应该是什么样子 -

myArray = ["123","ABC", "ABC,DEF", "GHI"]

【问题讨论】:

***.com/questions/11456850/… 看起来像JSON,你为什么不解析呢?哪个部分是实际的字符串? @epascarello 我已经看过这个问题了。在我的例子中,每个值都带有双引号。 var foo = JSON.parse('[' + myString + ']') 这同样令人困惑,它现在在语法上无效。 【参考方案1】:

好像你已经有一个数组,所以没有逗号可以拆分。转换它.toString() 看起来是一个不必要的步骤。

我认为您将语言语法与实际数据混淆了。您看到的双引号不是字符串内容的一部分。您似乎已经拥有所需的数据。

【讨论】:

感谢您的回复。我实际上让你对输入感到困惑。实际上我希望字符串用逗号分隔。请查看编辑。为之前的混乱道歉。【参考方案2】:

借助split()map()replace() 的一种方法

myString = ' "123","ABC", "ABC,DEF", "GHI" ';
console.log(myString.split('",').map(n=>n.replace(/\"| /g,'')));

【讨论】:

【参考方案3】:
myString = ' "123","ABC", "ABC, DEF", "GHI" ';
console.log(JSON.parse(`[$myString]`));

这应该可以解决问题...基本上是 epascarello 在 cmets 中对问题所写的内容。

干杯。

【讨论】:

【参考方案4】:

您可以尝试使用正则表达式([^"])* 我在https://regex101.com上测试过

这是您在下图中看到的结果 => https://regex101.com/r/a5dwNY/1

【讨论】:

以上是关于使用逗号拆分字符串,但忽略双引号内的逗号 - javascript的主要内容,如果未能解决你的问题,请参考以下文章

在逗号上拆分字符串并忽略双引号中的逗号[重复]

通过排除双引号内的逗号来拆分字符串

Java:拆分逗号分隔的字符串但忽略引号中的逗号

GROOVY - 解析CSV:忽略双引号内的逗号

如何在忽略引号内的任何逗号的情况下用逗号分隔? [复制]

用逗号分割字符串,但忽略括号或引号中的逗号