从字符串中删除双引号

时间:2011-01-18 04:08:06

标签: ruby regex string

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

  

Matthew "Matt" Perry

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

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

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

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

  

Matthew |Matt| Perry

代替?

4 个答案:

答案 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 '"', '|'