[Ruby]文字列(string)を分割して配列に変換するには?

Ruby

どうも、ちょげ(@chogetarou)です。

文字列(string)を分割して配列(array)に変換する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

文字列(string)を分割して配列(array)に変換する方法は、3つあります。

区切り文字

ひとつめは、区切り文字を使う方法です。

まず、文字列からsplitメソッドを呼び出します。

そして、splitメソッドの引数に区切り文字を指定します。

#text=対象の文字列, separator=区切り文字
result = text.split(separator)

上記のsplitメソッドは、呼び出した文字列(string)を区切り文字で分割した配列を生成します。

使用例

text = "a-b-cde-fg-hijk-lm-n"

result = text.split('-')

p result
出力:
["a", "b", "cde", "fg", "hijk", "lm", "n"]

正規表現

ふたつめは、正規表現を使う方法です。

まず、文字列からsplitメソッドを呼び出します。

そして、splitメソッドの引数に、区切り文字を正規表現のパターンで指定します。

#text=対象の文字列, pattern=正規表現のパターン
result = text.split(pattern)

上記のsplitメソッドは、呼び出した文字列(string)を正規表現にマッチした区切り文字で分割した配列を生成します。

使用例

text = "a6b5cde4fg41hijk3lm2n1"

result = text.split(/[1-9]+/)

p result
出力:
["a", "b", "cde", "fg", "hijk", "lm", "n"]

文字数

みっつめは、文字数を使う方法です。

まず、文字列からscanメソッドを呼び出します。

そして、scanメソッドの引数に「/.{n}/」(n=文字数)を指定します。

#text=対象の文字列, n=文字数
result = text.scan(/.{n}/)

上記のscanメソッドは、呼び出した文字列(string)を指定した文字数で分割した配列を生成します。

上記のscanメソッドでは、文字数が足りず、余った末尾の文字列が省力されます。

もし、文字数の余りを省略したくない場合は、scanメソッドの引数に「/.{1,n}/」(n=文字数)を指定します。

#余った文字列を省略しない
result = text.scan(/.{1,3}/)

使用例1

text = "abcdefghijklmno"

result = text.scan(/.{3}/)

p result
出力:
["abc", "def", "ghi", "jkl", "mno"]

使用例2

text = "abcdefghijklmn"

result = text.scan(/.{1,3}/)

p result
出力:
["abc", "def", "ghi", "jkl", "mn"]

まとめ

文字列(string)を分割して配列(array)に変換する方法は、次の3つです。

  • 区切り文字を使う方法
    result = text.split(separator)
  • 正規表現を使う方法
    result = text.split(pattern)
  • 文字数を使う方法
    result = text.scan(/.{n}/)

コメント

タイトルとURLをコピーしました