从字符串中删除双引号

15

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

Matthew "Matt" Perry

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

我在stackoverflow上找到了另一篇关于删除引号的帖子,建议使用以下方法:

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

但是会原封不动地返回该字符串(带双引号)。我如何获取

Matthew |Matt| Perry

呢?

4个回答

24
这将完成任务,如果你不想修改s
new_s = s.gsub /"/, '|'

如果您确实想修改s

s.gsub! /"/, '|'

5
您可以使用类似以下的方法:

您可以使用类似以下的方法:

text = 'Matthew "Matt" Perry'

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

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

SO的语法高亮又挂了。 - Nakilon

0

它会移除双引号。你可以在IRB中或者使用p时看到它们,因为在这些情况下字符串以漂亮的形式显示给你,让你能够看到它们是字符串。

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"

0

其他选择包括:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接