如何用Ruby原生格式化将整数转为3位字符串?无需多条件判断
当然可以!用Ruby原生格式化轻松实现
完全没必要写一堆if判断来处理数字位数,Ruby提供了好几种原生方法来帮你快速实现补零格式化,而且代码非常简洁:
方法1:使用sprintf或字符串%操作符
这是最经典的格式化方式,%03d表示将数字格式化为3位十进制数,不足的部分用0自动补齐:
(1..134).each do |x| puts sprintf("%03d", x) # 或者等价的更简洁写法: # puts "%03d" % x end
方法2:使用String#rjust方法
如果你更倾向于字符串操作,rjust可以把字符串右对齐,并用指定字符填充到目标长度:
(1..134).each do |x| puts x.to_s.rjust(3, '0') end
这里rjust(3, '0')会把数字转成字符串后,左边补0直到总长度为3,刚好满足你的需求。
方法3:使用format方法(Ruby 1.9+)
format方法和sprintf功能一致,写法更直观一些:
(1..134).each do |x| puts format("%03d", x) end
以上几种方法都完全是Ruby原生支持的,不需要额外依赖,而且因为你明确不需要处理超过3位的数字,这些方法都能完美输出001、002…011…134的格式。
内容的提问来源于stack exchange,提问作者timpone
相关产品推荐
相关产品推荐

