2012-04-27 41 views
16

No sé a lo que el término se llama, pero en Python Si escribeRubí cadena de sustitución

num1 = 4 
num2 = 2 
print("Lucky numbers: %d %d" %(num1, num2)) 

que se obtiene "Números de la suerte: 4 2" (sustitución?)

¿Cómo lo hago esto en ruby?

Intentando hacer el escenario anterior, funciona si tengo una variable, pero si necesito sub en múltiples variables, los paréntesis no son una sintaxis válida.

Respuesta

23
num1 = 4 
num2 = 2 
print "Lucky numbers: %d %d" % [num1, num2] 
26

Puede usar algo llamado String interpolation en Ruby para lograr esto.

ex:

num1 = 4 
num2 = 2 
puts "Lucky numbers: #{num1} #{num2}"; 

Aquí cada variable que está dentro del # {} se interpreta no como una cadena, sino como un nombre de variable y se sustituye el valor.

+0

Tenga en cuenta que esto resuelve la necesidad específica de números enteros, y en general es un buen lenguaje Ruby, pero no permite formatear sprintf como ' "% .3f"' – Phrogz

+1

@Phrogz correcta, pero la pregunta era acerca de la sustitución, no formateando –

+1

Quizás lo que estaba buscando es formatear. Solo quería poder crear cadenas así y luego pasarlas a otros métodos – MxyL

1

Se llama formato de impresión.

pago y envío más ejemplos Ruby Formatted Printing

¿Usted ha intentado algo así "%d"%10? Se evalúa a "10"

1.9.3-p0 :003 > "%02x"%(10) 
=> "0a" 
1.9.3-p0 :004 > 

1.9.3-p0 :005 > print "Nicely formatted string with an int: %d" % 10 
Nicely formatted string with an int: 10 => nil 
1.9.3-p0 :006 > 
5
n1, n2 = 17, 42 
puts "Lucky single number: %d" % n1 
puts "Lucky multiple numbers: %d %d" % [ n1, n2 ] 
puts "Lucky inline interpolation: #{n1} #{n2}" 

Para la documentación del formato permitido en String#% método de leer sobre Kernel#sprintf.

1

Los métodos de Ruby que imita más estrechamente que la sintaxis en Python son sprintf y format, que son alias para el uno al otro. Puede leer sobre ellos en profundidad en el Ruby Docs.

Aquí está un ejemplo:

num1 = 4 
num2 = 2 
sprintf("Lucky numbers: %d %d", num1, num2) 

Esto haría salida: "suerte Números: 4 2"

paréntesis son, por supuesto, opcional.

3

También puede usar un hash para la sustitución de cadenas. Esto es útil si tiene varias instancias que necesitan ser reemplazadas con la misma cadena.

p "%{foo} == %{foo}" % {:foo => "bar" } 
# => "bar == bar" 
Cuestiones relacionadas