I\'m trying to grab data from a MySQL database and use Ruby to reformat it into a flat text file. Some of my MySQL data contains double quotes like so:
<
You could use something like:
text = 'Matthew "Matt" Perry'
text.tr(%q{"'}, '|') # => "Matthew |Matt| Perry"
text = "Matthew 'Matt' Perry"
text.tr(%q{"'}, '|') # => "Matthew |Matt| Perry"
This will do it if you don't want to modify s
:
new_s = s.gsub /"/, '|'
If you do want to modify s
:
s.gsub! /"/, '|'
It removes doublequotes. You can see them in IRB or when using p
only because string are being showed for you in these cases in nice form, allowing you to see, that they are strings.
irb> 'Matthew "Matt" Perry'.scan(/'(.+?)'|"(.+?)"|([^ ]+)/).flatten.compact
=> ["Matthew", "Matt", "Perry"]
In real, they already don't have doublequotes.
irb> puts 'Matthew "Matt" Perry'.scan(/'(.+?)'|"(.+?)"|([^ ]+)/).flatten.compact
Matthew
Matt
Perry
=> nil
And to replace doublequotes with dash, you may use .tr:
irb> 'Matthew "Matt" Perry'.tr '"','|'
=> "Matthew |Matt| Perry"
Other choices are:
s.tr! '"', '|'
s2 = s.tr '"', '|'