I have a bit of a problem, I can’t seem to substitute an apostrphe
successfully
a = “'”
a.gsub!(/‘/,’\'')
puts a
gives me nothing.
two backslash gives me syntax error.
one backslash gives me just the apostrophy.
How do I do this?
irb(main):003:0> a = “a”
=> “a”
irb(main):004:0> a.gsub(/a/, ‘'’)
=> “'”
irb(main):007:0> a = “abc”
=> “abc”
irb(main):008:0> a.gsub(/a/, ‘\'’)
so ' gives you the apostrophe, \' gives you the part of the string
after the match. So three slashes gives nothing because the part of the
string after the match is empty. One slash gives you just the apostrophe
because you substitute the apostrophe with a brand new one. But I can’t
say from your code what you want it to do.
Returns a copy of str with all occurrences of pattern replaced with
either replacement or the value of the block. The pattern will
typically be a Regexp; if it is a String then no regular expression
metacharacters will be interpreted (that is /\d/ will match a
digit, but '\d' will match a backslash followed by a 'd').
If a string is used as the replacement, special variables from the
match (such as $& and $1) cannot be substituted into it, as
substitution into the string occurs before the pattern match
starts. However, the sequences \1, \2, and so on may be used to
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
interpolate successive groups in the match. These sequences are
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
shown in Table ?? on page ??.
In the block form, the current match is passed in as a parameter,
and variables such as $1, $2, $`, $&, and $' will be set
appropriately. The value returned by the block will be substituted
for the match on each call.
The result inherits any tainting in the original string or any
supplied replacement string.
"hello".gsub(/[aeiou]/, '*') #=> "h*ll*"
"hello".gsub(/([aeiou])/, '<\1>') #=> "h<e>ll<o>"
"hello".gsub(/./) {|s| s[0].to_s + ' '} #=> "104 101 108 108 111 "