2012-09-10 11 views
14

指定されたURI文字列をURIの最後のセグメントを抽出するには?ベストな方法は、Rubyでのような

+4

split( '/')。最後? – oldergod

+3

@oldergod:http://example.com/where?is = pancakes/house%3F'です。 –

+0

@muistooshortどうやってやるの?最初の '?'の前の最後の '/'から全てを取っていますか? – oldergod

答えて

44

私はパスを取得するURI moduleのような適切なURIパーサーを使用しますURIから。そして、/でそれを分割し、それの最後の部分を取得:それはうまく機能

require 'uri' 
theURI = 'http://user:[email protected]/foo/bar/baz/?lala=foo' 
uriPathTail = File.basename(URI.parse(theURI).path) # => baz 

:あなた.RBソース内から

ruby -ruri -e "print File.basename(URI.parse('$URI').path)" 

:ターミナルコマンドラインから

require 'uri' 

URI(uri).path.split('/').last 
+0

URLミュで私のために働いていません。 – oldergod

+0

@oldergodだから代わりに何を得るのですか? – Gumbo

+0

@muistooshort 'path.chomp( '/')'を使って分割する前に削除することができます。 – Gumbo

11
uri.split('/')[-1] 

または

uri.split('/').last 
+0

これは、これを行う最もクリーンでシンプルな方法だと思われます。 – Qasim

2

これらを試してみてください。

if url =~ /\/(.+?)$/ 
    last = $1 
end 

それとも

last = File.basename(url) 
2

をあなたが持っていたどんな法的なものでも。

URI.parse()を使用しない場合、urlのパラメータはURIの最後のセグメントと誤って解釈されます。

関連する問題