No entiendo lo que está sucediendo aquí. ¿Cómo debo alimentar gsub para obtener la cadena "Yaho \ 'o"?Ruby gsub no escapa de comillas simples
>> "Yaho'o".gsub("Y", "\\Y")
=> "\\Yaho'o"
>> "Yaho'o".gsub("'", "\\'")
=> "Yahooo"
No entiendo lo que está sucediendo aquí. ¿Cómo debo alimentar gsub para obtener la cadena "Yaho \ 'o"?Ruby gsub no escapa de comillas simples
>> "Yaho'o".gsub("Y", "\\Y")
=> "\\Yaho'o"
>> "Yaho'o".gsub("'", "\\'")
=> "Yahooo"
\ 'significa $' que es todo después del partido. Escape del \ de nuevo y funciona
"Yaho'o".gsub("'", "\\\\'")
ruby 1.9.3 '" Yaho'o ".gsub (" '"," \\\\' ") =>" Yaho \\ 'o "' –
No FUNCIONA ... Ver comentario arriba – theSociableme
@AdrienSchuler Funciona, IRB muestra una doble barra invertida para que pueda ver que se ha escapado. '" Yaho'o ".gsub (" '"," \\\\ "). Length => 7' –
"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 que es un poco más legible:
def escape_single_quotes(str)
str.gsub(/'/) { |x| "\\#{x}" }
end
Si quieres escapar tanto una comilla sencilla y una barra invertida, por lo que puede insertar esa cadena en una cadena de rubíes con comillas dobles, entonces lo siguiente lo hará por usted:
def escape_single_quotes_and_backslash(str)
str.gsub(/\\|'/) { |x| "\\#{x}" }
end
Usé el superior, y funcionó perfectamente. exactamente lo que necesitaba – nfriend21
Esta es una de las cosas más extrañas que he visto. –