comillas agregar ruby escaping

ruby - agregar comillas a un string python



¿Escapando comillas simples y dobles en una cadena en rubí? (9)

¿Cómo puedo evitar las comillas simples y dobles en una cadena?

Quiero escapar de comillas simples y dobles juntas. Sé cómo pasarlos por separado, pero no sé cómo pasarlos a los dos.

por ejemplo: str = "ruby ''on rails" " = ruby ''on rails"


Aquí hay un ejemplo de cómo usar %Q[] en un escenario más complejo:

%Q[ <meta property="og:title" content="#{@title}" /> <meta property="og:description" content="#{@fullname}''s profile. #{@fullname}''s location, ranking, outcomes, and more." /> ].html_safe



Me gustaría ir con un heredoc si empiezo a tener que preocuparme por escapar. Te lo hará por ti:

string = <<MARKER I don''t have to "worry" about escaping!!''"!! MARKER

MARKER delinea el inicio / final de la cadena. comience la cadena en la línea siguiente después de abrir el heredoc, luego termine la cadena usando nuevamente el delineador en su propia línea.

Esto hace todo el escape necesario y se convierte en una cadena con las comillas dobles:

string => "I don''t have to /"worry/" about escaping!!''/"!!/n"


Mi forma preferida es no preocuparse por el escape y en su lugar usar %q , que se comporta como una cadena de comillas simples (sin interpolación o escape de caracteres), o %Q para el comportamiento de cadenas con comillas dobles:

str = %q[ruby ''on rails" ] # like single-quoting str2 = %Q[quoting with #{str}] # like double-quoting: will insert variable

Consulte https://docs.ruby-lang.org/en/trunk/syntax/literals_rdoc.html#label-Strings y busque % strings .


Puede usar cadenas Q que le permiten usar cualquier delimitador que le guste:

str = %Q|ruby ''on rails" " = ruby ''on rails|


Una advertencia:

Usar %Q[] y %q[] para comparaciones de cadenas no es intuitivamente seguro.

Por ejemplo, si carga algo destinado a significar algo vacío, como "" o '''' , debe usar las secuencias de escape reales. Por ejemplo, supongamos qvar es igual a "" lugar de cualquier cadena vacía.

Esto evaluará a false
if qvar == "%Q[]"

Como será esto,
if qvar == %Q[]

Si bien esto evaluará a true
if qvar == "/"/""

Me encontré con este problema al enviar vars de línea de comandos de una pila diferente a mi script de ruby. Solo la respuesta de Gabriel Augusto funcionó para mí.


Use la barra invertida para escapar de los caracteres

str = "ruby /'on rails/" "


str = %(ruby ''on rails ") simplemente: str = %(ruby ''on rails ") porque solo % representa comillas dobles (o% Q) y permite la interpolación de variables en la cadena.


>> str = "ruby ''on rails/" /" = ruby ''on rails" => "ruby ''on rails" " = ruby ''on rails"