Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

nilや空文字が入った配列を接続して文字を作る際のtips

Effective_Rubyによれば…
Rubyは型判断システムの関係でnilが入り込むのだから、最初っから対策をねじ込んでおけ(意訳)」との事。

実際のところ

nilが含まれている配列を"-"で繋げて一つの文にする事を考えます。

["Shuzo", nil, "Kino", nil].join('-')
"Shuzo--Kino-"

まぁ、nilは空文字と認識されるため、意図した結果になりません。

こういった場合、nilを削除するArray#compactを使えば

 ["Shuzo", nil, "Kino", nil].compact.join('-')
"Shuzo-Kino"

と、ちゃんと意図した結果になります。

ところで…ここに空の文字列が入っているとさらに厄介です。

["Shuzo", nil, "Kino", ""].compact.join('-')
"Shuzo-Kino-"

こういうときには、Active_supportのObject#blank?が効きます。

["Shuzo", nil, "Kino", ""].delete_if(&:blank?).join("-")
"Shuzo-Kino"

やったぜ