Non capisco cosa sta succedendo qui. Come dovrei alimentare gsub per ottenere la stringa “Yaho \ ‘o”?
>> "Yaho'o".gsub("Y", "\\Y") => "\\Yaho'o" >> "Yaho'o".gsub("'", "\\'") => "Yahooo"
\ ‘significa $’ che è tutto dopo la partita. Sfuggi \ ancora e funziona
"Yaho'o".gsub("'", "\\\\'")
"Yaho'o".gsub("'", "\\\\'")
Perché stai sfuggendo al personaggio di fuga oltre a sfuggire alla singola citazione.
Anche questo lo farà, ed è un po ‘più leggibile:
def escape_single_quotes(str) str.gsub(/'/) { |x| "\\#{x}" } end
Se vuoi sfuggire sia a una virgoletta singola che a una barra rovesciata, in modo che tu possa incorporare quella stringa in una stringa di ruby con virgolette doppie, allora la seguente cosa farà per te:
def escape_single_quotes_and_backslash(str) str.gsub(/\\|'/) { |x| "\\#{x}" } end