やりたいこと
"hoge.fuga.piyo.com"
のような.
で区切られた文字列(サブドメイン)に対して、上位レベルのドメインのリストを取り出したい。
イメージとしてはこのような感じです。
Ruby
1sub_domain = "hoge.fuga.piyo.com" 2list_of_domains(sub_domain) 3=> ["hoge.fuga.piyo.com", "fuga.piyo.com", "piyo.com"]
試したこと
Ruby
1def upper_level_domain(domain) 2 return domain.split(".")[1..-1].join(".") if domain.split(".").size > 2 3 domain 4end
1つ上位のドメインを取り出すためのメソッドを実装したものの、これをうまいこと再帰的に呼び出してリスト化する方法が思い付かず、お知恵をいただけると助かります。
よろしくお願いいたします。
環境
Ruby 2.6.0
追記
これでイケるかもしれないです。
def list_of_domains(domain) list = [] (domain.split(".").length - 1).times do |i| list << domain.split(".", i+1).last end list end
ですが、何か泥臭い感じがしますので、もう少しエレガントな方法をご存知であればご教示いただけると大変ありがたいです。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。