5

正如你在红宝石中所知道的,你可以做到

"%03d" % 5
#=>  "005"

"%03d" % 55
#=> "055"

"%03d" % 555
#=> "555"

所以基本上数字将有3个字符串位置的“0”前缀

只是想知道是否有可能以类似的好方法做数字字符串后缀?(请不要 if 语句)

something 5
#=> 500

something 55
#=> 550

something 555
# => 555
4

2 回答 2

7

ljust方法怎么样?

"5".ljust(3, "0")

如果你想对整数这样做,还有一些to_s和方法调用to_i

您可以通过更多数学运算来避免字符串转换,例如log_10查找整数中的位数,然后i *= 10**x在哪里x需要多少个 0

像这样:

def something(int, power=3)
  int * 10**([power - Math.log10(int).to_i - 1, 0].max)
end
于 2012-07-16T10:46:03.020 回答
0

怎么样

  def prettify(n)
    ("%03d" % (n.to_s.reverse.to_i)).to_s.reverse
  end

哪个

  • 将您的数字转换为字符串
  • 扭转它
  • 将其转换回数字
  • 格式化它
  • 将其转换回 int
  • 再次反转它

当然,从现在起几个月后,维护这段代码可能会成为一项挑战:-)

于 2012-07-16T11:12:51.003 回答