如何在Ruby中用零填充字符串

uni*_*ife 1 ruby arrays loops padding

我遇到的情况是我的数组的值是字母数字。

我想遍历它们,并打印出带有填充0的值。

当我有一个数组并正常遍历它们时,它可以正常工作:

acct = ["123425326AA", "234123412341234AA", "12342342CP", "12342314234", "5"]

acct.each { |acct| puts acct }

Output:
$ruby main.rb
123425326AA
234123412341234AA
12342342CP
12342314234
5
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用填充0时会遇到问题。我试着玩, %#d但我不理解。例如,我试图%23d 在循环中使用23个“ 0”填充它。

我正在寻找的输出类型如下:

000000000000123425326AA
000000234123412341234AA
000000000000012342342CP
00000000000012342314234
00000000000000000000005
Run Code Online (Sandbox Code Playgroud)

我尝试使用此代码,它提到了一些有关整数的信息,并且我的数组值确实包含一些Alpha,但我不确定这是否是根本原因。但是这里有一些我尝试使用的代码示例。

acct.each { |i| puts "%23d" % i }

Output:
$ruby main.rb
main.rb:17:in `%': invalid value for Integer(): "123425326AA" (ArgumentError)
    from main.rb:17:in `block in <main>'
    from main.rb:17:in `each'
    from main.rb:17:in `<main>'
Run Code Online (Sandbox Code Playgroud)

从这里开始,我尝试将数组顺序更改为以下顺序,并且部分起作用,并且能够处理仅是数字的值,但是一旦达到字母数字值,便会失败。另外,它也没有放置0,而是用X数量的空格代替。

acct = ["5", "12342314234", "234123412341234AA", "12342342CP", "123425326AA"]
acct.each { |acct| puts "%23d" % acct }

Output:
$ruby main.rb
                      5
            12342314234
main.rb:18:in `%': invalid value for Integer(): "234123412341234AA" (ArgumentError)
    from main.rb:18:in `block in <main>'
    from main.rb:18:in `each'
    from main.rb:18:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我认为需要某种格式,但是我不确定如何实现。我确实在一些帖子中看到了要添加的内容,int.to_s但不确定:

acct.each { |acct| puts "%23d" % acct.to_s }
Run Code Online (Sandbox Code Playgroud)

Ama*_*dan 7

还有就是对于字符串在Ruby中零填充功能:

puts acct.rjust(23, '0')
Run Code Online (Sandbox Code Playgroud)