yucken の業務上電脳 Tips 日記、なのだよ。-弐式-

いまさら電脳 Tips を書いてみむとして、するなり.元々は広い意味での電脳(コンピュータ)の Tips を書いていたのですが,いつのまにか,解析ツールの「電脳 ruby」の Tips がメインに.‥‥‥で,5 年間放置してたのだけどやはり Tips を書くブログがないと不便なのでふっかちさせたのであります.(・)>

Ruby: sprintf と String の % (パーセント) メソッド

私は実数とか整数を文字列に変換するときに sprintf を使っていたのですが、場合によっては String の % (パーセント) メソッドで代用できるようです。これは配列の複数要素を一挙に変換するときに特に便利です。

たとえば、day = 30, maxtmp = 27.4 というデータがあった場合 spritf だと、

  day    = 30
  maxtmp = 27.4
  sprintf( "%d 日の最高気温は %5.1f ℃", day, maxtmp )

  => "30 日の最高気温は  27.4 ℃"

のような感じです。

これが、daymaxtmp = [ 30, 27.4 ] だと、

  daymaxtmp = [ 30, 27.4 ]
  sprintf( "%d 日の最高気温は %5.1f ℃", daymaxtmp )

TypeError: can't convert Array into Integer
        from (irb):12:in `sprintf'
        from (irb):12
        from c:/NumRu/bin/irb:11:in `<main>'

と簡単にはいかないのです。配列の各要素を文字列に埋め込みたいときは % メソッドを用いて次のようにします:

  daymaxtmp = [ 30, 27.4 ]
  "%d 日の最高気温は %5.1f ℃"%( daymaxtmp )

  => "30 日の最高気温は  27.4 ℃"

sprintf の第一要素の文字列部分を取り出して、それにメソッド % をくっつけて、引数として変換すべき配列を入れるという感じです。

参考にしたサイト

xibbar.hatenablog.com
class String (Ruby 1.9.3)


この記事は 8 月 25 日に作成投稿しましたが、記事の日時間隔を均等化するために、8 月 19 日投稿扱いに変更します。