从字符串中删除双引号
我正在尝试从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 '"', '|'