Удалить двойные кавычки из строки - PullRequest
15 голосов
/ 18 января 2011

Я пытаюсь получить данные из базы данных MySQL и использовать Ruby, чтобы переформатировать их в простой текстовый файл. Некоторые из моих данных MySQL содержат двойные кавычки, например:

Matthew "Matt" Perry

и мне нужно удалить эти кавычки и заменить их чем-то другим, | например.

Я нашел еще один пост в stackoverflow об удалении кавычек, в котором предлагалось следующее:

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

но возвращает строку без изменений (с двойными кавычками). Как я могу получить

Matthew |Matt| Perry

вместо

Ответы [ 4 ]

23 голосов
/ 18 января 2011

Это будет сделано, если вы не хотите изменять s:

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

Если вы хотите изменить s:

s.gsub! /"/, '|'
5 голосов
/ 18 января 2011

Вы можете использовать что-то вроде:

text = 'Matthew "Matt" Perry'

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

text = "Matthew 'Matt' Perry"
text.tr(%q{"'}, '|') # => "Matthew |Matt| Perry"
0 голосов
/ 18 января 2011

Другие варианты:

s.tr! '"', '|'
s2 = s.tr '"', '|'
0 голосов
/ 18 января 2011

Удаляет двойные кавычки.Вы можете видеть их в 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...