【问题标题】:Split the string using comma but ignore the comma within double quotes - javascript使用逗号拆分字符串,但忽略双引号内的逗号 - 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"]

【问题讨论】:

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

标签: javascript arrays node.js regex typescript


【解决方案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

      【讨论】:

        猜你喜欢
        • 2011-12-25
        • 2012-07-12
        • 1970-01-01
        • 2020-04-05
        • 1970-01-01
        • 2012-05-23
        相关资源
        最近更新 更多