Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Ruby辞典

  1. トップページ
  2. Ruby辞典
  3. 文字列.index / rindex

文字列.index / rindex

文字列の中から部分文字列を検索し、最初または最後に見つかった位置(インデックス)を返すメソッドです。

構文
# 最初に見つかった位置を返します。
文字列.index(検索文字列)
文字列.index(検索文字列, 開始位置)

# 最後に見つかった位置を返します。
文字列.rindex(検索文字列)
文字列.rindex(検索文字列, 終了位置)
メソッド一覧
メソッド概要
index(str)文字列の中で最初に見つかった位置を整数で返します。見つからない場合は『nil』を返します。
index(str, pos)第2引数の位置から検索を開始します。負の値を指定すると末尾からの位置になります。
rindex(str)文字列の末尾側から検索し、最後に見つかった位置を返します。見つからない場合は『nil』を返します。
rindex(str, pos)第2引数の位置から末尾方向へ向かって検索します。
サンプルコード
文章 = "abcabc"

# 最初に見つかった位置を取得します。
puts 文章.index("b")     # 1
puts 文章.index("b", 2)  # 4(インデックス2以降から検索)

# 最後に見つかった位置を取得します。
puts 文章.rindex("b")    # 4
puts 文章.rindex("b", 3) # 1(インデックス3以前から検索)

# 見つからない場合は nil を返します。
puts 文章.index("z").inspect  # nil

# 日本語の文字列で使用します。
メッセージ = "こんにちは、こんばんは"
puts メッセージ.index("こん")   # 0
puts メッセージ.rindex("こん")  # 6

# nil チェックと組み合わせた活用例です。
パス = "/home/user/documents/file.txt"
スラッシュ位置 = パス.rindex("/")
if スラッシュ位置
  ファイル名 = パス[スラッシュ位置 + 1..]
  puts ファイル名  # file.txt
end
概要

『index』は文字列の先頭から検索して最初にヒットした位置を、『rindex』は末尾から検索して最後にヒットした位置を返します。インデックスは0始まりです。見つからない場合は『nil』が返るため、戻り値を使用する前に『nil』チェックを行うことを推奨します。

正規表現を引数に渡すことも可能です(例: 『index(/[0-9]/)』)。ファイルパスの最後の『/』を探して拡張子やファイル名を取り出すなど、文字列処理の実装でよく使われます。

文字列の一部を切り出すには『slice / []』を、文字列の存在確認だけであれば『include?』を使用してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。