在Ruby中解析URL字符串

我有一个非常简单的字符串,我想在ruby中解析并试图找到最优雅的解决方案。 该字符串的格式为/xyz/mov/exdaf/daeed.mov?arg1=blabla&arg2=3bla3bla

我想要的是:string1:/xyz/mov/exdaf/daeed.mov string2:arg1 = blabla&arg2 = 3bla3bla

所以基本上代表了吗?

但找不到一个好例子。 任何帮助,将不胜感激。

在问号上拆分初始字符串。

str.split("?") => ["/xyz/mov/exdaf/daeed.mov", "arg1=blabla&arg2=3bla3bla"] 

我认为最好的解决方案是使用URI模块。 (您可以执行URI.parse('your_uri_string').query以获取?右侧的部分。)请参阅http://www.ruby-doc.org/stdlib/libdoc/uri/rdoc/

例:

 002:0> require 'uri' # or even 'net/http' true 003:0> URI URI 004:0> URI.parse('/xyz/mov/exdaf/daeed.mov?arg1=bla&arg2=asdf') # 005:0> URI.parse('/xyz/mov/exdaf/daeed.mov?arg1=bla&arg2=asdf').query "arg1=bla&arg2=asdf" 006:0> URI.parse('/xyz/mov/exdaf/daeed.mov?arg1=bla&arg2=asdf').path "/xyz/mov/exdaf/daeed.mov" 

否则,您可以捕获正则表达式:/ /^(.*?)\?(.*?)$/ .*?) /^(.*?)\?(.*?)$/ .*?) /^(.*?)\?(.*?)$/ 。 那么$1$2就是你想要的。 (但在这种情况下URI更有意义。)

这似乎是你要找的,字符串内置拆分function:

 "abc?def".split("?") => ["abc", "def"] 

编辑 :呸,慢;)