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 日投稿扱いに変更します。