使用整数将Ruby字符串格式化为3个字符

使用整数将Ruby字符串格式化为3个字符,ruby,Ruby,我想要这个剧本 (1..134).each do |x| puts "0#{x}" # ???? end 要输出: 001 002 ... 011 ... 134 如果不使用一堆只使用本机格式的if语句,这是可能的吗?它不需要处理大于3位的数字 当然。可以使用以下格式化程序完成此操作: '%03d' % 1 # 001 '%03d' % 10 # 010 '%03d' % 100 # 100 循环将如下所示: (1..134).each { |x| puts '%03d'

我想要这个剧本

 (1..134).each do |x|
   puts "0#{x}" # ????
 end
要输出:

001
002
...
011
...
134

如果不使用一堆只使用本机格式的if语句,这是可能的吗?它不需要处理大于3位的数字

当然。可以使用以下格式化程序完成此操作:

'%03d' % 1   # 001
'%03d' % 10  # 010
'%03d' % 100 # 100
循环将如下所示:

(1..134).each { |x| puts '%03d' % x }
还有一种方法可以做到这一点,但不言自明:

(1..134).each { |x| puts format('%03d', x) }

当然。可以使用以下格式化程序完成此操作:

'%03d' % 1   # 001
'%03d' % 10  # 010
'%03d' % 100 # 100
循环将如下所示:

(1..134).each { |x| puts '%03d' % x }
还有一种方法可以做到这一点,但不言自明:

(1..134).each { |x| puts format('%03d', x) }

实现零填充的一种方法是使用:


希望这有帮助

实现零填充的一种方法是使用:


希望这有帮助

这是可行的,但对于一个想知道它是如何工作的新手来说,这将是完全令人迷惑的。或者:1.upto134{i|printf%03d\n,i}@JordanRunning@mudasobwa在哪里拉出1..134。每个方法(&method):printf.curry2.call%03d\n%运算符的文档在这里:。格式字符串是在中指定的,其中Kernelformat是别名。这是可行的,但对于希望了解其工作原理的新手来说,这将是完全神秘的。或者:1.upto134{i | printf%03d\n,i}@Jordan正在运行where is@mudasobwa以提取1..134。每个方法(&M):printf.curry2.call%03d\n%运算符的文档位于此处:。格式字符串在中指定,其中Kernelformat是别名。仅供参考,Ruby还可以迭代数字字符串:“001”…'134”。每个{s | put s}都是@Stefan所说的,尽管我更喜欢高达例如“001”的可读性和短暂性。高达@Stefan所说的134,修改后的put[*'001'…'134']FYI,Ruby还可以迭代数字字符串:“001”..“134”。每个{s | put s}都是@Stefan说的,尽管我更喜欢upto的可读性和短暂性,例如“001”。upto'134'是@Stefan说的,修改后的put[*'001'..“134']