Ответ 1
Это будет сделано, если вы не хотите изменять s
:
new_s = s.gsub /"/, '|'
Если вы хотите изменить s
:
s.gsub! /"/, '|'
Я пытаюсь захватить данные из базы данных MySQL и использовать Ruby, чтобы переформатировать его в текстовый файл. Некоторые из моих данных MySQL содержат двойные кавычки, например:
Matthew "Matt" Perry
и мне нужно удалить эти кавычки и заменить их чем-то другим, | например.
Я нашел еще одно сообщение о stackoverflow об удалении цитат, которые предложили следующее:
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
только потому, что строка отображается в этих случаях в приятной форме, что позволяет вам видеть, что они являются строками.
irb> 'Matthew "Matt" Perry'.scan(/'(.+?)'|"(.+?)"|([^ ]+)/).flatten.compact
=> ["Matthew", "Matt", "Perry"]
В реале у них уже нет двойных букв.
irb> puts 'Matthew "Matt" Perry'.scan(/'(.+?)'|"(.+?)"|([^ ]+)/).flatten.compact
Matthew
Matt
Perry
=> nil
И чтобы заменить doublequotes тире, вы можете использовать .tr
:
irb> 'Matthew "Matt" Perry'.tr '"','|'
=> "Matthew |Matt| Perry"
Другие варианты:
s.tr! '"', '|'
s2 = s.tr '"', '|'