Ruby 如何根据整数中的位数更改空格数?
我希望打印出数组中的值,每行的开头都有行号。我想更改间距,以确保值垂直排列,而不考虑数组的大小Ruby 如何根据整数中的位数更改空格数?,ruby,Ruby,我希望打印出数组中的值,每行的开头都有行号。我想更改间距,以确保值垂直排列,而不考虑数组的大小 @lines.each_with_index {|l,i| newtext = l[:text] space = ' ' * @lines.size.to_s.size cur_space = i.to_s.size (1..cur_space).each { space.chop! } puts "\##{i}#{space} #{newtext}" } 输出 #0 bla
@lines.each_with_index {|l,i|
newtext = l[:text]
space = ' ' * @lines.size.to_s.size
cur_space = i.to_s.size
(1..cur_space).each { space.chop! }
puts "\##{i}#{space} #{newtext}"
}
输出
#0 blah
#1 blah
#2 blah
#3 blah
#4 blah
#5 blah
#6 blah
#7 blah
#8 blah
#9 blah
#10 blah
#11 blah
#12 blah
#13 blah
这是可行的,但我想知道是否有更好的方法可以做到这一点?您正在寻找:
您正在寻找:
您可以使用以下选项卡:
2.2.4 :001 > class Tabs
2.2.4 :002?> def self.do_it
2.2.4 :003?> (1..13).each do |number|
2.2.4 :004 > puts "##{number}\tblah"
2.2.4 :005?> end
2.2.4 :006?> end
2.2.4 :007?> end
=> :do_it
2.2.4 :008 > Tabs.do_it
#1 blah
#2 blah
#3 blah
#4 blah
#5 blah
#6 blah
#7 blah
#8 blah
#9 blah
#10 blah
#11 blah
#12 blah
#13 blah
您可以使用以下选项卡:
2.2.4 :001 > class Tabs
2.2.4 :002?> def self.do_it
2.2.4 :003?> (1..13).each do |number|
2.2.4 :004 > puts "##{number}\tblah"
2.2.4 :005?> end
2.2.4 :006?> end
2.2.4 :007?> end
=> :do_it
2.2.4 :008 > Tabs.do_it
#1 blah
#2 blah
#3 blah
#4 blah
#5 blah
#6 blah
#7 blah
#8 blah
#9 blah
#10 blah
#11 blah
#12 blah
#13 blah
您还可以与“%-3d”
一起使用:
:左对齐此转换的结果-
:将参数转换为十进制数d
它输出:
#0 blah
#1 blah
#2 blah
#3 blah
#4 blah
#5 blah
#6 blah
#7 blah
#8 blah
#9 blah
#10 blah
#11 blah
#12 blah
#13 blah
您还可以与“%-3d”
一起使用:
:左对齐此转换的结果-
:将参数转换为十进制数d
它输出:
#0 blah
#1 blah
#2 blah
#3 blah
#4 blah
#5 blah
#6 blah
#7 blah
#8 blah
#9 blah
#10 blah
#11 blah
#12 blah
#13 blah
这似乎是最好的答案。如果您使用ruby2.4或更高版本,我会使用
@lines.size.pred.digits.count
似乎是最好的答案。如果您使用ruby2.4或更高版本,我将使用@lines.size.pred.digits.count
聪明。它对巨大的ID不起作用,但可能不是问题。聪明。它不适用于大型ID,但可能不是问题。