文字列を配列化させて、配列を文字列にして、、、というパターンの時に、どういう書き方が期待する値になってくれるでしょうか。
ということで、ダメなパターンも交えて、整理していきましょう!
#文字列を配列にする
splitメソッド
を使っていきます。
split 英訳:分断する
つまり、まとまりのあるもの(文字列等)を分断させて、要素とさせるメソッドになります。(配列化)
引数は、切り取る部分の境目を指定するイメージになります
様々なまとまりのパターンから、配列化をしてみました。
させたい配列は、["foo", "bar", "baz"]
とします。
さて、どの書き方が合っているでしょうか。
# 配列化 # 返り値
"foo bar baz".split ["foo", "bar", "baz"] # ○
"foo bar baz".split('') ["f", "o", "o", " ", "b", "a", "r", " ", "b", "a", "z"]
"foo bar baz".split(',') ["foo bar baz"]
"foobarbaz".split ["foobarbaz"]
"foobarbaz".split('') ["f", "o", "o", "b", "a", "r", "b", "a", "z"]
"foobarbaz".split(',') ["foobarbaz"]
"fooxbarxbaz".split('x') ["foo", "bar", "baz"] # ○
"foo, bar, baz".split ["foo,", "bar,", "baz"]
"foo, bar, baz".split('') ["f", "o", "o", ",", " ", "b", "a", "r", ",", " ", "b", "a", "z"]
"foo, bar, baz".split(',') ["foo", " bar", " baz"]
"foo,bar,baz".split ["foo,bar,baz"]
"foo,bar,baz".split('') ["f", "o", "o", ",", "b", "a", "r", ",", "b", "a", "z"]
"foo,bar,baz".split(',') ["foo", "bar", "baz"] # ○
%w[foo bar baz] ["foo", "bar", "baz"] # ○
この中から、期待する配列になる書き方は、4通りということになります。
#配列から、文字列にしたい
joinメソッド
を使っていきます。
引数に、要素と要素の間に差し込む値を入れていくイメージになります。
# 文字列化 # 返り値
["foo", "bar", "baz"].join "foobarbaz"
["foo", "bar", "baz"].join('') "foobarbaz"
["foo", "bar", "baz"].join(',') "foo, bar, baz"
#おまけ 範囲を配列化
# 範囲を配列化 #戻り値
(0..9).to_a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
('a'..'z').to_a ["a",..,"z"]
(1..5).map{ |i| i**2 ) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]