Разбор строки в ruby - PullRequest
       50

Разбор строки в ruby

0 голосов
/ 27 февраля 2020

У меня есть строка, которую мне нужно проанализировать в 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 ]

3 голосов
/ 27 февраля 2020

Для этого можно использовать 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"

Регулярное выражение гласит: «соответствует запятой» двойная кавычка ((?<=") - положительный взгляд за ), а затем двойная кавычка ((?=") - положительный взгляд ). (На самом деле, для приведенного примера нужно только включить один из положительных взглядов.)

1 голос
/ 27 февраля 2020

Ваша строка содержит значения, разделенные запятыми, поэтому вы можете использовать библиотеку CSV Ruby:

require 'csv'

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