给定一个 Ruby 中的字符串数组,其中一些带有逗号的项在引号中:
my_string.inspect
# => "\"hey, you\", 21"
如何获取一个数组:
["hey, you", " 21"]
给定一个 Ruby 中的字符串数组,其中一些带有逗号的项在引号中:
my_string.inspect
# => "\"hey, you\", 21"
如何获取一个数组:
["hey, you", " 21"]
.parse_csv
方法可以完成这个任务。require 'csv'
"\"hey, you\", 21".parse_csv
# => ["hey, you", " 21"]
require 'csv'; CSV.parse_line("\"hey, you\", 21)
)。你知道是不是这样吗? - Cary Swoveland.parse_csv
。我真的认为你应该将你的 CSV.parse_line
输入为单独的答案,这样你就能得到应得的信用了。这样做,然后回复我,我会很乐意给它点赞。 - ReggieBrequire 'csv'
(假设你有很好的记忆力)。这会导致parse_csv
被添加到String
的实例方法中。 - Cary Swoveland 是的,使用CSV::parse_line或String#parse_csv
(这两者都需要在代码中添加require 'csv'
以使用),是解决此处问题的方式,但也可以使用正则表达式:
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"]
"21"
而不是" 21"
,只需删除\s
即可。parse_line
,但我对他的回答的评论应该足以告知读者该方法,这就是我关心的全部。在我看来,那个评论并不算作一个独立的答案。 - Cary Swoveland