感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

文字列を扱う。OSコマンドを実行する。

<スポンサーリンク>

Rubyで長い文字列を複数行に分けて連結して、1つにする。

途中に改行を埋め込まずに、長いシングルクォート文字列を複数行に区切りたい場合には、複数の隣り合った文字列リテラルにすればいい。

# coding: utf-8

long_string = 'これは3個のリテラルを'\
			  'インタープリタによって1個に連結させる'\
			  'やりかたである。できた文字列は改行なし'

puts long_string

実行結果は、以下のようになる。

>ruby sample.rb
これは3個のリテラルをインタープリタによって1個に連結させるやりかたである。でき
た文字列は改行なし

文字列リテラルのセパレータ

アポストロフィや引用符を含む文字列を扱うときは、シングルクォート、ダブルクォートの文字列リテラルは使いにくい

そのため、Rubyは文字列リテラルのための汎用的な引用構文をサポートしている。

hoge = %q(ここでは'文字のエスケープ'は考えなくても大丈夫!)
fuga = %Q|彼はあのとき、こう言ったんだ。"一人の彼女に執着するな"と。|

puts hoge
puts fuga

これを実行すると、以下のようにシングルクォート(')やダブルクォート(")を文字列に混ぜても、普通に表示できる

>ruby sample.rb
ここでは'文字のエスケープ'は考えなくても大丈夫!
彼はあのとき、こう言ったんだ。"一人の彼女に執着するな"と。

ヒアドキュメント

ヒアドキュメントの先頭は、「<<」または「<<-」で表す。
「<<」の後ろに末尾のセパレータとして使われる識別子または文字列を書く。

here = <<EOF
あの日あの時、あの場所で見た花の名前を
僕はまだ知らないんだ。
"どうしても、思い出せないんだ"
EOF

puts here
puts

foo = <<♪
俺は、どうしたらいい??
どうして、あのとき・・・。
どうすれば・・・!
♪

puts foo

これを実行した結果は、こんな感じで、ちゃんとヒアドキュメント使えてる。

>ruby sample.rb
あの日あの時、あの場所で見た花の名前を
僕はまだ知らないんだ。
"どうしても、思い出せないんだ"

俺は、どうしたらいい??
どうして、あのとき・・・。
どうすれば・・・!

Rubyでコマンドを実行する

RubyでOSシェルコマンドを実行するためには、バッククォート(`)で囲むとよい。
コンソールに出力される文字列が、返り値として渡される。
たとえば、以下のように。

hoge = `echo hoge`
puts hoge
cd = `cd C:\\dev`
puts cd

dir = `dir`
puts dir

実行結果はこうなる。

hoge

 ドライブ C のボリューム ラベルは Windows です
 ボリューム シリアル番号は C899-335B です

 C:\example\ruby のディレクトリ

2014/03/19  08:28    <DIR>          .
2014/03/19  08:28    <DIR>          ..
2014/03/19  08:28                84 sample.rb
               1 個のファイル                  84 バイト
               2 個のディレクトリ  182,591,655,936 バイトの空き領域

これはWindowsで実行したが、linuxでも同じことができる。

読んだ本

プログラミング言語 Ruby

プログラミング言語 Ruby

  • 作者: まつもとゆきひろ,David Flanagan,卜部昌平(監訳),長尾高弘
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2009/01/26
  • メディア: 大型本
  • 購入: 21人 クリック: 356回
  • この商品を含むブログ (123件) を見る
Rubyのバイブル的な本だという話をどこかで読んで、毎日ちょっとずつ読み進めている。
基礎を丁寧に解説してくれる本だ。