けだるい夏の早朝,突然携帯電話が鳴った。午前6時に電話をかけてくる人は,ある程度限られている。いくら休日とはいえ,朝の6時に用事がある人なんてあまりいない(ちなみに僕は休みの日でも早起きしている)。嫌な予感とともに携帯電話を見ると,やはり大学以来の友人Kだった。

 電話に出て最初の言葉が「やぁ!」でも「おはよう!」でもなく「ところで…」だった。つい電話を切りたくなる。朝の6時にコール音3回までに電話に出たのだ。それくらいは許されるだろう。しかし切ったとしても,また電話をかけてくるだろうから,僕はそのまま会話を続けることにした。

 友人Kの電話内容は予想通りだった。また何かしらのツールを作れという。どうやら今回は「デートで使った金額を計算するツール」が欲しいらしい。やれやれ,どんな事情があるのかは知らないが,それが休日の早朝に急を要することなのだろうか。

 というわけで,今回は友人Kのためにツールを作りながら,Rubyにおいて頻繁に利用する文字列操作を押さえておこう。

 文字列操作においては,非常に強力な武器となる正規表現*1という機能がある。今回はそこまでは踏み込まずに,基本的な文字列操作をしっかり説明しよう。

よく使うメソッドを振り返る

 文字列操作でよく使用されるメソッドを表1に示す。この連載で登場したメソッドも含まれるが,順番に見ていこう。

表1●文字列操作でよく使用されるメソッド
表1●文字列操作でよく使用されるメソッド

gsub(pattern , replace)

 gsubは,文字列置換のためのメソッドだ。リスト1のように使用する。

s = "queen"
puts s.gsub("q", "k") #-> kueen
リスト1●文字列を置換するgsubメソッドの例
図1●gsubメソッドを使って文字列を置き換えた実行結果の画面
図1●gsubメソッドを使って文字列を置き換えた実行結果の画面

 gsubは基本的に二つの引数を取る。第1引数で置き換えたい文字列を指定し,第2引数で変換後の文字列を指定する。今までの連載やリスト1のサンプル・プログラムでもそうだが,第1引数に文字列を指定している。ここに正規表現を指定することもできる。実行結果が図1だ。「q」という文字が「k」に変更されている。

include?(substr)

図2●文字列の中に指定した文字列が存在するか尋ねた実行結果の画面
図2●文字列の中に指定した文字列が存在するか尋ねた実行結果の画面

 次にinclude?メソッドを見てみよう。これも以前に登場した。文字列の中に,指定した文字列が存在するかどうかを尋ねるメソッドだ。リスト2のように記述する。文字列が存在するときは「true」を返し,存在しないときは「false」を返す。実行結果は図2の通りだ。

s = "queen"
puts s.include?("ee") #-> true
puts s.include?("aa") #-> false
リスト2●文字列の中に指定した文字列があるか尋ねるinclude?メソッド