次のようなURI文字列を指定します。
http://www.somesite.com/abc
http://www.somesite.com/alpha/beta/abc
http://www.somesite.com/alpha/abc
これらのURIの最後にあるabc
を取得するRubyの最もエレガントな方法は何ですか?
RI module のような適切なURIパーサーを使用して、URIからパスを取得します。次に、それを/
で分割し、最後の部分を取得します。
require 'uri'
URI(uri).path.split('/').last
uri.split('/')[-1]
または
uri.split('/').last
これらを試してください:
if url =~ /\/(.+?)$/
last = $1
end
または
last = File.basename(url)
ここでの回答で提案されているsplit
の使用法はすべて合法ですが、私の意見では @ matskoの回答 がより明確なコードを読んでいます
last = File.basename(url)
ターミナルコマンドラインから:
Ruby -ruri -e "print File.basename(URI.parse('$URI').path)"
.rbソース内から:
require 'uri'
theURI = 'http://user:[email protected]/foo/bar/baz/?lala=foo'
uriPathTail = File.basename(URI.parse(theURI).path) # => baz
それはあなたが持っていたどんな合法的なtheURIでもうまく機能します。
URI.parse()を使用しない場合、URLへのパラメーターはURIの最後のセグメントとして誤って取得されます。
値が任意の軌道文字列+ URIの場合、以下の解決策が機能するはずです。
まず、文字列からURIを抽出します。
uri_string = URI.extract("Test 123 http://www.somesite.com/abc")
上記のコマンドは配列を返します
次に、を使用してURIの最後の部分を抽出します
uri_string[0].split('/').last
前提条件:require "uri"をRubyスクリプトに追加する必要があります