如何在Ruby中输出前导零?
我正在从一个Ruby脚本输出一组编号的文件。 数字来自增加一个计数器,但为了使他们在目录中很好地sorting,我想在文件名中使用前导零。 换一种说法
file_001 …
代替
file_1
将数字转换为string时,是否有简单的方法来添加前导零? (我知道我可以做“如果less于10 ….如果less于100”)。
如果计数器的最大位数是已知的(例如,对于计数器1..876,n = 3),则可以
str = "file_" + i.to_s.rjust(n, "0")
对string使用%
运算符:
irb(main):001:0> "%03d" % 5 => "005"
左边是一个printf格式的string,右边可以是一个值列表,所以你可以这样做:
irb(main):002:0> filename = "%s/%s.%04d.txt" % ["dirname", "filename", 23] => "dirname/filename.0023.txt"
这里有一个printf格式的备忘单,你可能会发现在形成你的格式string中很有用。 printf格式最初来自C
函数printf
,但是在perl,ruby,python,java,php等中可以使用类似的格式化函数。
你不能在连接文件名之前使用string格式的值吗?
"%03d" % number
使用String#next
作为计数器。
>> n = "000" >> 3.times { puts "file_#{n.next!}" } file_001 file_002 file_003