【问题标题】:splitting a comma-separated string with or without double quotes [duplicate]使用或不使用双引号分割逗号分隔的字符串[重复]
【发布时间】:2020-07-09 03:22:40
【问题描述】:

我有这些字符串:

#input:
"A & B/C,1,2"
"\"D, E & F\",1,2"

我想转换成数组。

#output:
["A & B/C",1,2]
["D, E & F",1,2]

split(",") 不适合这个,所以我尝试了正则表达式:

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

这两个都会在输出中产生额外的报价:

["A & B/C,1,2"]
["\"D, E & F\",1,2"]

您能指出正则表达式中的错误吗?

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

这样使用扫描的代码怎么样?

str.scan(/((?:(?:\"[^"]*\")|[^,])*),?/)[0...-1].map(&:first)

【讨论】:

    【解决方案2】:

    这可能就是你要找的东西

    (?:^|,)(?=[^"]|(")?)"?((?(1)[^"]*|[^,"]*))"?(?=,|$)
    

    发件人:Regex to split a CSV

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      • 2021-06-12
      • 1970-01-01
      • 2020-04-05
      相关资源
      最近更新 更多