Sì, utilizzando CSV::parse_line è il modo di andare qui, ma si potrebbe anche farlo con una regex:
r =/
(?: # Begin non-capture group
(?<=\") # Match a double-quote in a positive lookbehined
.+? # Match one or more characters lazily
(?=\") # Match a double quote in a positive lookahead.
) # End non-capture group
| # Or
\s\d+ # Match a whitespace character followed by one or more digits
/x # Extended mode
str = "\"hey, you\", 21"
str.scan(r)
#=> ["hey, you", " 21"]
Se invece si preferisce avere "21"
piuttosto che " 21"
, è sufficiente rimuovere \s
.
fonte
2015-10-28 02:29:35
Probabilmente meglio usare una gemma CSV esistente. "Come" è scrivere un parser CSV, che è più fastidioso di quanto si possa sospettare. –
@DaveNewton grazie! Ho guardato nella libreria CSV di Ruby e "string" .parse_csv mi dà quello che sto cercando. – steel