コース一覧
/
Ruby 応用
/

文字列の応用

文字列を検索しよう

文字列の中に特定の文字や文字列が含まれているかを調べたり、どこにあるかを検索したりする方法を学びます。

.include? で存在を確認する

文字列の中に特定の部分文字列が含まれているかを確認するには、.include? メソッドを使います。

text = "Hello, Ruby!" puts text.include?("Ruby") # => true puts text.include?("Java") # => false

.include? メソッドは、部分文字列が見つかれば true、見つからなければ false を返します。

.index で位置を検索する

部分文字列がどこにあるかを知りたい場合は、.index メソッドを使います。

text = "Hello, Ruby!" puts text.index("Ruby") # => 7 puts text.index("o") # => 4

.index メソッドは、部分文字列が最初に見つかった位置(インデックス)を返します。見つからない場合は nil を返します。

text = "Hello, Ruby!" p text.index("Java") # => nil

putsnil を出力すると何も表示されないため、nil を確認したいときは p メソッドを使います。

検索開始位置を指定する

.index メソッドの第2引数で、検索を開始する位置を指定できます。

text = "banana" # 012345 puts text.index("a") # => 1(最初の "a" の位置) puts text.index("a", 2) # => 3(インデックス 2 以降で検索) puts text.index("a", 4) # => 5(インデックス 4 以降で検索)

.start_with? で先頭を判定する

文字列が特定の文字列で始まるかを判定するには、.start_with? メソッドを使います。

text = "Hello" puts text.start_with?("He") # => true puts text.start_with?("lo") # => false

複数の候補を指定することもできます。いずれかに一致すれば true を返します。

filename = "report.pdf" puts filename.start_with?("doc", "report") # => true

.end_with? で末尾を判定する

文字列が特定の文字列で終わるかを判定するには、.end_with? メソッドを使います。

text = "Hello" puts text.end_with?("lo") # => true puts text.end_with?("He") # => false

.start_with? と同様に、複数の候補を指定できます。

filename = "image.png" puts filename.end_with?(".jpg", ".png") # => true

.count で文字の出現回数を数える

指定した文字が何回出現するかを数えるには、.count メソッドを使います。

text = "banana" puts text.count("a") # => 3 puts text.count("n") # => 2

複数の文字を指定すると、それらの文字の合計出現回数を返します。

text = "hello" puts text.count("lo") # => 3("l" が 2 回、"o" が 1 回)

Ruby の .count メソッドは個々の文字をカウントします。部分文字列 "lo" が何回出現するかではなく、"l""o" という文字がそれぞれ何回出現するかの合計を返します。

まとめ

  • .include? メソッドで部分文字列の存在を確認できる
  • .index メソッドは部分文字列の位置を返し、見つからなければ nil を返す
  • .start_with?.end_with? で先頭・末尾の判定ができる
  • .count メソッドで指定した文字の出現回数を数えられる