Rubí gsub no escapa comillas simples
Pregunta
No entiendo lo que está pasando aquí. ¿Cómo debo alimentar gsub para obtener la cadena "Yaho \ 'o"?
>> "Yaho'o".gsub("Y", "\\Y")
=> "\\Yaho'o"
>> "Yaho'o".gsub("'", "\\'")
=> "Yahooo"
Solución
\ '$' significa que es todo lo que después del partido. Escapar de la \ nuevo y funciona
"Yaho'o".gsub("'", "\\\\'")
Otros consejos
"Yaho'o".gsub("'", "\\\\'")
Debido a que está escapando el carácter de escape, así como escape de la comilla simple.
Esto también lo hará, y es un poco más fácil de leer:
def escape_single_quotes(str)
str.gsub(/'/) { |x| "\\#{x}" }
end
Si quieres escapar tanto una comilla sencilla y una barra invertida, de manera que se puede incrustar esa cadena en una cadena entre comillas dobles rubí, a continuación, la siguiente lo hará por usted:
def escape_single_quotes_and_backslash(str)
str.gsub(/\\|'/) { |x| "\\#{x}" }
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow