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整数の桁数を見つけるなど、もう少し数学を使って文字列変換を回避できます。次に、必要な0の数はどこi *= 10**xにありますか。x

このような:

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 に答える