在Ruby中将整数格式化为固定长度的字符串

ssc*_*eck 5 ruby string format string-formatting

有没有一种简单的方法可以将给定的整数格式化为具有固定长度和前导零的字符串?

# convert numbers to strings of fixed length 3 
[1, 12, 123, 1234].map { |e| ??? }
=> ["001", "012", "123", "234"]
Run Code Online (Sandbox Code Playgroud)

我找到了解决方案,但也许有一种更聪明的方法.

format('%03d', e)[-3..-1]
Run Code Online (Sandbox Code Playgroud)

Cri*_*scu 7

如何使用% 1000而不是进行字符串操作来获取最后三位数?

[1, 12, 123, 1234].map { |e| format('%03d', e % 1000) }
Run Code Online (Sandbox Code Playgroud)

更新:

正如Tin Man在评论中所建议的那样,原始版本在可读性方面更好,并且比这个版本慢了1.05倍,因此在大多数情况下使用它可能是有意义的.

  • @sschmeck 对。我觉得在这种情况下重复是可以接受的,但如果您想要一个更通用的解决方案,您可以创建一个像[this](http://ideone.com/KGvkuV)这样的“last_digits”函数。 (2认同)