comillas cadenas agregar ruby string quotes literals backslash

ruby - cadenas - agregar comillas a un string python



Barras invertidas en cadenas de comillas simples vs. cadenas de comillas dobles (5)

¿Esto se debe a que el ''/' se interpreta como un carácter especial en la cadena de comillas dobles, pero en la cadena de una sola cita los caracteres se conservan tal cual?

Sí. Las cadenas de comillas simples se tratan como literales; las cadenas de comillas dobles están interpoladas. Esto es lo mismo en otros lenguajes similares a Ruby, y no ha cambiado en 1.9.

Si agrego una barra invertida + espacio al comienzo de cadenas dobles e individuales, obtengo resultados diferentes:

"/ text" ''/ text''

En el resultado de la cadena de comillas dobles, veo solo un espacio.
En el resultado para la secuencia de una sola cotización veo la barra invertida + espacio.

¿Lo que está ocurriendo allí? ¿Esto se debe a que ''/ '' se interpreta como un carácter especial en la cadena de comillas dobles, pero en la cadena de una sola cita los caracteres se conservan tal cual?

Si cambio las cadenas a esto, veo el mismo resultado, es decir, una barra oblicua seguida de un espacio y luego el texto:

"// text" ''// text''

En ambos casos, la barra invertida se escapó. Estoy confundido por qué funcionan de la misma manera en esta situación.

¿Hay alguna regla que ayude a explicar la diferencia fundamental entre cómo las cadenas de comillas simples y las cadenas de comillas dobles manejan las barras diagonales inversas en Ruby?



Las cadenas de comillas dobles admiten todo el rango de secuencias de escape, como se muestra a continuación:

  • /a Campana / alerta (0x07)
  • /b Retroceso (0x08)
  • /e Escape (0x1b)
  • /f Formford (0x0c)
  • /n Newline (0x0a)
  • Regresar (0x0d)
  • /s espacio (0x20)
  • /t Tab (0x09)
  • /v Pestaña vertical (0x0b)

Para cadenas de una sola cita, dos barras invertidas consecutivas son reemplazadas por una sola barra invertida, y una barra invertida seguida de una comilla simple se convierte en una sola comilla:

''escape using "//"'' -> escape using "/" ''That/'s right'' -> That''s right


Ruby solo interpreta secuencias de escape en cadenas de comillas dobles. En una cadena única entre comillas, solo // (barra diagonal inversa) y /' (comilla inversa) se toman como caracteres especiales. Debe usar cadenas dobles entre comillas solo cuando necesite más interpretación. De lo contrario, las comillas simples proporcionan un aumento de rendimiento.

Cuando mencionaste incluir el nombre de una variable, Ruby nunca hace eso. Solo el nombre de la variable se trata como más del literal de la cadena. Para incluir el valor de una variable (o cualquier expresión) ponga la expresión así:

"#{variable}"

Tenga en cuenta que esto solo funciona en cadenas de comillas dobles. Para agregar una variable a una sola entre comillas, debe hacer esto:

''The value of X is: ''+X

Si necesita un formateo serio, busque en la versión de Ruby de sprintf y printf. Son prácticamente envoltorios de las funciones C, y son bastante potentes, pero un poco engorrosos de usar.


Te recomendaría " Programación de Rubí / Cuerdas " para obtener una descripción general concisa de las diferencias.

De la referencia:

puts "Betty''s pie shop"

puts ''Betty/'s pie shop''

Como "Betty''s" contiene un apóstrofo, que es el mismo carácter que la comilla simple, en la segunda línea necesitamos usar una barra invertida para escapar del apóstrofo, de modo que Ruby entienda que el apóstrofo está en la cadena literal en lugar de marcar el final de la cadena literal. La barra diagonal inversa seguida de la comilla simple se llama secuencia de escape.