やりたいこと
URL からクエリ文字列を取り除きたい。
方法
この記事では URI オブジェクトを利用した方法を紹介する。もちろん正規表現などでも可能。
require 'uri'
url = 'http://yoyonest.jp/view/item/000000047948?category_page_id=ct26'
URI(url).tap { _1.query = nil }.to_s
#=> "http://yoyonest.jp/view/item/000000047948"
# URI は
# [scheme, userinfo, host, port, registry, path, opaque, query, fragment]
# という構成要素からなる。
# 必要に応じて、あるいは必要はないが僕のように潔癖な人は fragment も取り除くとよい。
url = 'http://yoyonest.jp/view/item/000000047948?category_page_id=ct26#:~:text=%E3%83%9E%E3%82%A6%E3%83%AB'
URI(url).tap { _1.query = nil }.to_s
#=> "http://yoyonest.jp/view/item/000000047948#:~:text=%E3%83%9E%E3%82%A6%E3%83%AB"
URI(url).tap { _1.query = _1.fragment = nil }.to_s
#=> "http://yoyonest.jp/view/item/000000047948"
バージョン情報
$ ruby -v
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin23]
$ gem list | egrep "^uri"
uri (default: 0.13.0)