我正在尝试从MySQL数据库中获取数据并使用Ruby将其重新格式化为平面文本文件。我的一些MySQL数据包含双引号,如下所示:
Matthew "Matt" Perry
我需要删除这些引号并用其他内容替换它们,|例如。
我在stackoverflow上发现了另一篇关于删除引用的帖子,建议如下:
s.scan(/'(.+?)'|"(.+?)"|([^ ]+)/).flatten.compact
但是返回完整的字符串(带双引号)。我怎么才能得到
Matthew |Matt| Perry
代替?
答案 0 :(得分:23)
如果您不想修改s
:
new_s = s.gsub /"/, '|'
如果您确实要修改s
:
s.gsub! /"/, '|'
答案 1 :(得分:5)
您可以使用以下内容:
text = 'Matthew "Matt" Perry'
text.tr(%q{"'}, '|') # => "Matthew |Matt| Perry"
text = "Matthew 'Matt' Perry"
text.tr(%q{"'}, '|') # => "Matthew |Matt| Perry"
答案 2 :(得分:0)
删除双引号。您可以在IRB中或仅在使用p
时看到它们,因为在这些情况下以 nice 形式显示字符串,允许您看到它们是字符串。
irb> 'Matthew "Matt" Perry'.scan(/'(.+?)'|"(.+?)"|([^ ]+)/).flatten.compact
=> ["Matthew", "Matt", "Perry"]
实际上,他们已经没有双引号。
irb> puts 'Matthew "Matt" Perry'.scan(/'(.+?)'|"(.+?)"|([^ ]+)/).flatten.compact
Matthew
Matt
Perry
=> nil
要用短划线取代双引号,您可以使用.tr
:
irb> 'Matthew "Matt" Perry'.tr '"','|'
=> "Matthew |Matt| Perry"
答案 3 :(得分:0)
其他选择是:
s.tr! '"', '|'
s2 = s.tr '"', '|'