コース一覧
/
Ruby 応用
/

文字列の応用

文字列の一部を切り出そう

配列と同じように、文字列でも範囲指定で一部を切り出すことができます。このレッスンでは、文字列の部分取得を学びます。

配列の範囲取得の復習

Ruby 入門コースでは、配列から複数の要素を取得する方法を学びました。範囲オブジェクトや開始位置と長さを使って、配列の一部を取り出せることを覚えているでしょうか。

numbers = [10, 20, 30, 40, 50] p numbers[1..3] # => [20, 30, 40] p numbers[1, 3] # => [20, 30, 40]

実は、文字列でも同じ方法で一部を切り出すことができます。

文字列の一部を取り出す

文字列も配列と同様に、各文字にインデックスが割り振られています。

text = "Hello" # 01234

配列と同じ構文で、文字列の一部を取り出せます。

text = "Hello" puts text[0] # => H puts text[1] # => e puts text[4] # => o

範囲オブジェクトで切り出す

終端を含む範囲(..)

..(ドット2つ)を使うと、終端を含む範囲で文字列を切り出せます。

text = "Hello, Ruby!" # 0123456789.. puts text[0..4] # => Hello(インデックス 0 から 4 まで) puts text[7..10] # => Ruby(インデックス 7 から 10 まで)

終端を含まない範囲(...)

...(ドット3つ)を使うと、終端を含まない範囲で文字列を切り出せます。

text = "Hello, Ruby!" # 0123456789.. puts text[0...5] # => Hello(インデックス 0 から 5 の手前まで) puts text[7...11] # => Ruby(インデックス 7 から 11 の手前まで)

..... の違いを意識して使い分けましょう。

開始位置と長さで切り出す

範囲オブジェクトの代わりに、開始位置取得する文字数を指定する方法もあります。

text = "Hello, Ruby!" # 0123456789.. puts text[0, 5] # => Hello(インデックス 0 から 5 文字) puts text[7, 4] # => Ruby(インデックス 7 から 4 文字)

取得したい文字数が明確なときは、この方法が便利です。

負のインデックスとの組み合わせ

文字列でも負のインデックスを使えます。-1 は最後の文字、-2 は最後から2番目の文字を表します。

text = "Hello, Ruby!" puts text[-1] # => ! puts text[-5] # => R

範囲オブジェクトと負のインデックスを組み合わせると、末尾を基準にした柔軟な切り出しができます。

text = "Hello, Ruby!" puts text[-5..-2] # => Ruby(末尾から5番目から末尾から2番目まで) puts text[0..-2] # => Hello, Ruby(最後の1文字を除く)

開始位置と長さの指定でも、負のインデックスを使えます。

text = "Hello, Ruby!" puts text[-5, 4] # => Ruby(末尾から5番目から 4 文字)

まとめ

  • 文字列でも配列と同じ方法で一部を切り出せる
  • 文字列[開始..終了] で終端を含む範囲を切り出せる
  • 文字列[開始...終了] で終端を含まない範囲を切り出せる
  • 文字列[開始, 長さ] で開始位置から指定した文字数を切り出せる
  • 負のインデックスを使うと、末尾を基準にした切り出しができる