从字符串中删除双引号

我正在尝试从MySQL数据库中获取数据并使用Ruby将其重新格式化为平面文本文件。 我的一些MySQL数据包含双引号,如下所示:

Matthew "Matt" Perry

我需要删除这些引号并用其他东西替换它们,| 例如。

我在stackoverflow上发现了另一篇关于删除引号的post,建议如下:

 s.scan(/'(.+?)'|"(.+?)"|([^ ]+)/).flatten.compact 

但是返回完整的字符串(带双引号)。 我怎样才能得到

Matthew |Matt| Perry

代替?

如果您不想修改s这将执行此操作:

 new_s = s.gsub /"/, '|' 

如果你想修改s

 s.gsub! /"/, '|' 

你可以使用类似的东西:

 text = 'Matthew "Matt" Perry' text.tr(%q{"'}, '|') # => "Matthew |Matt| Perry" text = "Matthew 'Matt' Perry" text.tr(%q{"'}, '|') # => "Matthew |Matt| Perry" 

它删除了双引号。 您可以在IRB中或在使用p时看到它们,因为在这些情况下以正常forms显示字符串,允许您看到它们是字符串。

 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" 

其他选择是:

 s.tr! '"', '|' s2 = s.tr '"', '|'