2011-07-15 35 views

Respuesta

7
>> str = "ruby 'on rails\" \" = ruby 'on rails" 
=> "ruby 'on rails" " = ruby 'on rails" 
14

Puede utilizar cadenas Q que le permiten utilizar cualquier delimitador te gusta:

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

tengo barra de búsqueda y Analizada esta "sdasd" "FSD" y su me da = Q | sdasd" – Aleem

+0

hacer referencia a cualquier docs – Numbers

65

Mi forma preferida es la de no preocuparse por el escape y el uso de% q (que actúa como una sola cadena entre comillas) o% Q para el comportamiento de cadenas entre comillas dobles.

por lo

str = %q[ruby 'on rails"] # Single quoting 
str2 = %Q[quoting with #{str}] # will insert variable 
+0

Se da cita con el rubí 'sobre raíles \", no necesito ese extra \ – Aleem

+6

? El escape se muestra solo cuando lo "inspecciona". Trate de ponerlo en su lugar. – Yossi

24

Uso barra invertida para escapar caracteres

str = "ruby \'on rails\" " 
0

He aquí un ejemplo de cómo utilizar %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 
5

Me gustaría ir con a heredoc si empiezo a tener que preocuparme por escapar. Se ocupará de usted:

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 que sea necesario y se convierte en una doble cadena entre comillas:

string 
=> "I don't have to \"worry\" about escaping!!'\"!!\n" 
+0

Tenga en cuenta que un heredoc es una forma torpe de citar cadenas pequeñas. Lo que necesita esta pregunta es una meta respuesta que enumera todas las opciones de cotización junto con sus pros y sus contras. –

+0

Muy cierto, Mark. Debería haber notado que es grosero usarlos en cadenas pequeñas. – jbarr

3

me gustaría utilizar solo : str = %(ruby 'on rails ") Porque solo % significa comillas dobles (o% Q) y permite la interpolación de variables en la cadena.

1

Una advertencia:

Usando %Q[] y %q[] para las 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 que qvar es igual a "" en lugar de cualquier cadena vacía.

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

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

Aunque esto va a evaluar a true
if qvar == "\"\""

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

Cuestiones relacionadas