formateo de formato de cadena ruby

Tengo un conjunto de nombres de archivo con el siguiente nombre

"archivo001" "archivo0001" ... "archivo002" "archivo0002" ... ... "archivo100" "archivo0100" ... ...

El patrón es bastante obvio:

nombre, padded_number

Entonces, si quisiera usar el formato de cadena para los archivos en la primera columna, simplemente escribiría

"%s%3d" %[nombre, número]"

Pero esto codifica el relleno (3). ¿Cómo puedo hacer que también pueda especificar el pad como una variable y de alguna manera formatear el entero proporcionado para usar el padding especificado?

preguntado el 02 de mayo de 12 a las 19:05

2 Respuestas

Utilice la interpolación de cadenas:

padding = 9
"%s%#{padding}d" %[name, number]

contestado el 02 de mayo de 12 a las 19:05

Esto da como resultado "archivo" seguido de 8 espacios y un "1". - grava

¿No necesitas un 0 ¿ahí? "%s%0#{padding}d" - Adrián Pronk

Ustedes tienen razón, pero todavía responde a su núcleo pregunta, es decir, incrustar una variable en la cadena de formato. Sí, su cadena de formato actual debe modificarse. - cody caughlan

format("%s%0#{padding}d", name, number) pasa la validación de la guía de estilo de Ruby - Sebastián

prefix = "file"
number = "1"
padding = 4
filename = prefix + number.rjust(padding, '0') #=> "file0001"

contestado el 09 de mayo de 13 a las 19:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.