红宝石中的字符串解析

时间:2020-02-27 05:35:03

标签: ruby-on-rails ruby string string-parsing

我有一个需要用ruby解析的字符串,例如:

a = '"a,b","c,d","e,f"'

我将Postgres用作数据库,并使用以下命令返回不同的输出。

# example:
a = '"a,b","c,d","e,f"'
a.split('"')
#=> ["", "a,b", ",", "c,d", ",", "e,f"]

预期输出为["a,b" "c,d","e,f"]

2 个答案:

答案 0 :(得分:3)

您可以将String#split与正则表达式结合使用。

str = '"a,b","c,d","e,f"'
  #=> "\"a,b\",\"c,d\",\"e,f\"" 

arr = str.split(/(?<="),(?=")/)
  #=> ["\"a,b\"", "\"c,d\"", "\"e,f\""] 
puts arr
"a,b"
"c,d"
"e,f"

正则表达式为:“匹配逗号,并在其后加上双引号((?<=")正向后看),然后加上双引号((?=")是< em> positive lookahead )(实际上,对于给出的示例,只需要包含其中之一即可。)

答案 1 :(得分:1)

您的字符串似乎包含逗号分隔的值,因此您可以使用Ruby的CSV库:

require 'csv'

CSV.parse_line('"a,b","c,d","e,f"')
#=> ["a,b", "c,d", "e,f"]