如何根据整数中的数字更改空格数?

Tak*_*kun 1 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}"
}
Run Code Online (Sandbox Code Playgroud)

产量

#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
Run Code Online (Sandbox Code Playgroud)

这有效,但我想知道是否有更好的方法来做到这一点?

ndn*_*kov 5

您正在寻找String#ljust:

index_size = @lines.size.pred.to_s.size

@lines.each_with_index do |line, index|
  puts "##{index.to_s.ljust(index_size)} #{line[:text]}"
end
Run Code Online (Sandbox Code Playgroud)

  • 似乎是最好的答案.如果您使用ruby2.4或更高版本,我会使用`@ lines.size.pred.digits.count` (2认同)