文字列に指定の文字列が含まれているか検索する

文字列の中に別途指定した文字列が含まれているかどうかを調べることができます。左端から右へ向かって調べる方法と右端から左へ向かって調べる方法が用意されています。ここでは Ruby で文字列に指定の文字列が含まれているか検索する方法について解説します。

(Last modified: )

左端から検索する

文字列の中に指定の文字列が含まれるかどうかを検索する方法です。 String クラスで用意されている index メソッドを使います。

index(pattern, pos = 0)

1 番目の引数に指定した文字列が含まれているかどうかを右へ向かって検索します。見つかった場合は文字列の左端の位置を返します。見つからなければ nil を返します。 2 番目の引数を省略した場合は 0 番目の文字から検索しますが、 2 番目の引数を指定した場合はその位置から検索を行います。

位置は先頭の文字が 0 、次の文字が 1 と数えてていきます。文字単位なので半角文字でも全角文字でも同じ扱いとなります。

具体的には次のように記述します。

str = "Hello"
pos = str.index("l") # 2

str = "東京都中央区"
pos = str.index("中央") # 3

右端から検索する

検索するときに左端からではなく右端から左へ向かって検索することもできます。 String クラスで用意されている rindex メソッドを使います。

rindex(pattern, pos = self.size)

1 番目の引数に指定した文字列が含まれているかどうかを左へ向かって検索します。見つかった場合は文字列の左端の位置を返します。見つからなければ nil を返します。 2 番目の引数を省略した場合は末尾の文字から検索しますが、 2 番目の引数を指定した場合はその位置から検索を行います。

具体的には次のように記述します。

str = "Hello"
pos = str.rindex("l") # 3

str = "東京都中央区"
pos = str.rindex("中央") # 3

文字列が含まれているかどうかだけを確認する

文字列の中に指定した文字列が含まれているかどうかだけを確認する方法です。 String クラスで用意されている include? メソッドを使います。

include?(substr)

文字列の中に 1 番目の引数に指定した文字列が含まれていれば true を返し、含まれていなければ false を返します。

具体的には次のように記述します。

str = "Hello"
check = str.include?("el") # true

str = "東京都中央区"
check = str.include?("港") # false
サンプルコード

では簡単なサンプルで試してみます。

# encoding: UTF-8

str = "Hello"
puts("対象の文字列:" + str)
puts("「l」が含まれるかどうかを検索します")

if str.include?("l")
  puts("文字列の中に「l」は含まれます")

  lpos = str.index("l")
  rpos = str.rindex("l")

  puts("左から検索した結果の位置は" + lpos.to_s + "です")
  puts("右から検索した結果の位置は" + rpos.to_s + "です")
else
  puts("文字列の中に「l」は含まれません")
end

実行結果は次のようになります。

文字列を検索する

-- --

Ruby で文字列に指定の文字列が含まれているか検索する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。