【ruby】URIparserを使わずにURLを分解する方法
今回は「日本語」が含まれるURLから
「日本語」の部分だけを抽出する
というなかなか無い仕様に遭遇したのでその時のロジックを
備忘録的にまとめたいと思います。
# 文字列(URLはダミー) referer = "http://g08m11.hateblo.jp?q=グロースハック&l=沖縄" # [?]部分の前後で分解 ref_hash = referer.split("?") ref_hash[1].split("&").map { |v| v.split("=") } key_value = Hash[ *ref_hash[1].split("&").map { |v| v.split("=") }.flatten ] => {"l"=>"沖縄", "q"=>"グロースハック"} key_value['q'] => "グロースハック" key_value['l'] => "沖縄"
flattenという見慣れないメソッドが肝。
flattenメソッドは、配列の配列を平坦化した新しい配列を返します。
配列中に含まれる配列からすべて要素を取り出して、親の配列の中に並べます。