[Ruby]文字列を分解して配列にする方法を丁寧に解説!

splitメソッドを使う

splitメソッドとは

文字列を分解して配列にするメソッドで、第一引数に区切り文字を指定することができるが、指定しない場合は空白文字で区切られる。

何も指定せず分解する場合

str = "ogino fujiwara nakamura"
 
array = str.split
 
p array

↓実行結果

["ogino", "fujiwara", "nakamura"]

半角スペースで区切られて配列が帰ってきた。

区切り文字を指定して分解する場合

以下のように第一引数で指定する。

文字列.split(区切り文字)
str = "ogino,fujiwara,nakamura"
 
array = str.split(",")
 
p array

↓実行結果

 ["ogino", "fujiwara", "nakamura"]

*区切り文字に文字列も指定可能

str = "ABCDEFG"
 
array = str.split("DE")
 
p array

↓実行結果

["ABC", "FG"]

正規表現にマッチした部分で分割する場合

↓書き方

文字列.split(正規表現)
str = "AB,CDE*F"

array = str.split(/[,|*]/)

p array

↓実行結果

["AB", "CDE", "F"]

一文字ずつ分解する場合(splitを使う)

引数に“”(ブランク)を指定する。

文字列.split("")
str = "chibalotte"
 
array = str.split("")
 
p array

↓実行結果

 ["c", "h", "i", "b", "a", "l", "o", "t", "t", "e"]

一文字ずつ分解する場合(charsを使う)

charsは文字列の文字を、一文字ずつ返すメソッド。

str = "chibalotte"

array = str.chars

p array

↓実行結果

 ["c", "h", "i", "b", "a", "l", "o", "t", "t", "e"]

分割数を指定したい場合

splitメソッドは、分割数を指定できるため、分割後の配列内の要素数を指定することができる。

分割数を第二引数(limit)で指定する。

文字列.split(区切り文字, 分割数)
str = "A,B,C,D,E,F,G"
 
array = str.split(",", 3)
 
p array

↓実行結果

["A", "B", "C,D,E,F,G"]

*分割数が文字列の区切り文字より少ない場合、前方の文字列から優先して区切られる。

scanメソッドを使う

正規表現では、「. 」は一文字を表すので、scanメソッドを使って以下のように分割することも可能。

str = "lotte"

array = str.scan(/./)

p array

↓実行結果  

 ["l", "o", "t", "t", "e"]

*「 . 」の数によって、何文字で分割するかを指定する。

例)二文字

str = "chibalotte"

array = str.scan(/../)

p array

↓実行結果

 ["ch", "ib", "al", "ot", "te"]
タイトルとURLをコピーしました