Как я могу выводить ведущие нули в Ruby?

Я выводил набор нумерованных файлов из Ruby script. Цифры поступают от увеличения счетчика, но чтобы сделать их красивыми в каталоге, я бы хотел использовать начальные нули в именах файлов. Другими словами

file_001...

вместо

file_1

Существует ли простой способ добавления ведущих нулей при преобразовании числа в строку? (Я знаю, что могу сделать ", если менее 10.... если менее 100" ).

Ответ 1

Если максимальное количество цифр в счетчике известно (например, n = 3 для счетчиков 1..876), вы можете сделать

str = "file_" + i.to_s.rjust(n, "0")

Ответ 2

Используйте оператор % со строкой:

irb(main):001:0> "%03d" % 5
=> "005"

Левая сторона - это строка формата printf, а правая сторона может быть списком значений, поэтому вы можете сделать что-то вроде:

irb(main):002:0> filename = "%s/%s.%04d.txt" % ["dirname", "filename", 23]
=> "dirname/filename.0023.txt"

Здесь печатный лист формата printf, который может оказаться полезным при формировании строки формата. Формат printf исходит из функции C printf, но аналогичные функции форматирования доступны в perl, ruby, python, java, php и т.д.

Ответ 3

Не можете ли вы использовать форматирование строки значения до того, как вы разделите имя файла?

"%03d" % number

Ответ 4

Используйте String#next в качестве счетчика.

>> n = "000"
>> 3.times { puts "file_#{n.next!}" }
file_001
file_002
file_003