文字列.slice / []
| 対応: | Ruby 1.8(2003) |
|---|
文字列の一部を切り出すメソッドです。『slice』と『[]』(ブラケット記法)はどちらも同じ動作をします。
構文
# インデックスと長さを指定して切り出します。 文字列.slice(開始インデックス, 長さ) 文字列[開始インデックス, 長さ] # 範囲オブジェクトで切り出します。 文字列[開始..終了] 文字列[開始...終了] # 終端を含まない # 部分文字列を指定して切り出します。 文字列[検索文字列]
メソッド一覧
| 記法 | 概要 |
|---|---|
| str[n] | インデックス n の文字を返します。負の値を指定すると末尾からの位置になります。 |
| str[n, len] | インデックス n から len 文字分を切り出して返します。 |
| str[n..m] | インデックス n から m までの範囲を切り出します(m を含む)。 |
| str[n...m] | インデックス n から m の直前までを切り出します(m を含まない)。 |
| str[substr] | 文字列に一致する部分を返します。見つからない場合は『nil』を返します。 |
サンプルコード
sample_string_slice.rb
text = "Hello, Ruby!" # インデックスと長さで切り出します。 puts text[0, 5] # Hello puts text[7, 4] # Ruby # 範囲で切り出します。 puts text[0..4] # Hello puts text[0...5] # Hello(終端を含まない) # 負のインデックスで末尾から指定します。 puts text[-5, 4] # Ruby puts text[-1] # !(最後の1文字) # 日本語でも同様に使えます。 greeting = "おはようございます" puts greeting[0, 3] # おはよ puts greeting[3..] # うございます(Ruby 2.6以降の無限範囲) # 部分文字列を指定します。 puts text["Ruby"] # Ruby puts text["Java"].inspect # nil # 日付文字列から年月日を取得します。 date = "2024-03-15" puts date[0, 4] # 2024(年) puts date[5, 2] # 03(月) puts date[8, 2] # 15(日)
ruby string_slice.rb Hello Ruby Hello Hello Ruby ! おはよ うございます Ruby nil 2024 03 15
概要
Rubyの文字列切り出しは『[]』記法が一般的によく使われます。『slice』はメソッド形式で同じ操作ができます。インデックスの範囲外を指定した場合は『nil』が返ることがあるため、動的なインデックスを使う場合は戻り値の確認を忘れないようにしてください。
Ruby 2.6以降では『str[n..]』という無限範囲が使えます。これはn文字目以降をすべて取得する場合に便利です。また、正規表現を引数に指定することもできます(例: 『str[/\d+/]』)。
文字列を分割して配列にするには『split』を、文字列の長さを取得するには『length / size』を使用してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。