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,但可能不是问题。