Ответ 1
Если максимальное количество цифр в счетчике известно (например, n = 3 для счетчиков 1..876), вы можете сделать
str = "file_" + i.to_s.rjust(n, "0")
Я выводил набор нумерованных файлов из Ruby script. Цифры поступают от увеличения счетчика, но чтобы сделать их красивыми в каталоге, я бы хотел использовать начальные нули в именах файлов. Другими словами
file_001...
вместо
file_1
Существует ли простой способ добавления ведущих нулей при преобразовании числа в строку? (Я знаю, что могу сделать ", если менее 10.... если менее 100" ).
Если максимальное количество цифр в счетчике известно (например, n = 3 для счетчиков 1..876), вы можете сделать
str = "file_" + i.to_s.rjust(n, "0")
Используйте оператор %
со строкой:
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 и т.д.
Не можете ли вы использовать форматирование строки значения до того, как вы разделите имя файла?
"%03d" % number
Используйте String#next
в качестве счетчика.
>> n = "000"
>> 3.times { puts "file_#{n.next!}" }
file_001
file_002
file_003