¿Cómo puedo generar ceros a la izquierda en Ruby?
Estoy generando un conjunto de archivos numerados desde un script Ruby. Los números provienen del incremento de un contador, pero para que se ordenen bien en el directorio, me gustaría usar ceros a la izquierda en los nombres de archivos. En otras palabras
archivo_001...
en lugar de
archivo_1
¿Existe una forma sencilla de agregar ceros a la izquierda al convertir un número en una cadena? (Sé que puedo hacer "si es menos de 10... si es menos de 100").
Utilice el %
operador con una cadena:
irb(main):001:0> "%03d" % 5
=> "005"
El lado izquierdo es una cadena en formato printf y el lado derecho puede ser una lista de valores, por lo que podrías hacer algo como:
irb(main):002:0> filename = "%s/%s.%04d.txt" % ["dirname", "filename", 23]
=> "dirname/filename.0023.txt"
Aquí hay una hoja de referencia en formato printf que puede resultarle útil para formar su cadena de formato. El formato printf es originalmente de la C
función printf
, pero hay funciones de formato similares disponibles en perl, ruby, python, java, php, etc.
Si se conoce el número máximo de dígitos en el contador (por ejemplo, n = 3 para contadores 1..876), puede hacer
str = "file_" + i.to_s.rjust(n, "0")
¿No puedes simplemente usar el formato de cadena del valor antes de concatenar el nombre del archivo?
"%03d" % number