Non capisco cosa sta succedendo qui. Come dovrei alimentare gsub per ottenere la stringa "Yaho \ 'o"?Ruby gsub non sfugge alle virgolette singole
>> "Yaho'o".gsub("Y", "\\Y")
=> "\\Yaho'o"
>> "Yaho'o".gsub("'", "\\'")
=> "Yahooo"
Non capisco cosa sta succedendo qui. Come dovrei alimentare gsub per ottenere la stringa "Yaho \ 'o"?Ruby gsub non sfugge alle virgolette singole
>> "Yaho'o".gsub("Y", "\\Y")
=> "\\Yaho'o"
>> "Yaho'o".gsub("'", "\\'")
=> "Yahooo"
\ 'significa $' che è tutto dopo la partita. fuggire di nuovo la \ e funziona
"Yaho'o".gsub("'", "\\\\'")
ruby 1.9.3 '" Yaho'o ".gsub (" '"," \\\\' ") =>" Yaho \\ 'o "' –
NON FUNZIONA .... Vedere sopra commento – theSociableme
@AdrienSchuler Funziona, IRB visualizza una doppia barra rovesciata in modo da poter vedere che è sfuggito. '" Yaho'o ".gsub (" '"," \\\\' "). Length => 7' –
"Yaho'o".gsub("'", "\\\\'")
Perché si sta sfuggire il carattere di escape così come sfuggire alla sola offerta.
Questo sarà anche farlo, ed è un po 'più leggibile:
def escape_single_quotes(str)
str.gsub(/'/) { |x| "\\#{x}" }
end
Se si vuole sfuggire sia un single-preventivo e una barra rovesciata, in modo che è possibile incorporare quella stringa in una stringa rubino doppia citazione, quindi il seguente lo farà per voi:
def escape_single_quotes_and_backslash(str)
str.gsub(/\\|'/) { |x| "\\#{x}" }
end
Ho usato quello superiore e ha funzionato perfettamente. esattamente quello di cui avevo bisogno – nfriend21
Questa è una delle cose più bizzarre che ho visto. –