在Ruby中解析URL字符串

5 ruby string url uri tokenize

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

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

所以基本上代表了吗?

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

Eva*_*her 10

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

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

  • 如果输入始终是URL,那么已经有一个URL解析库可能是更好的选择. (3认同)

Ben*_*kes 10

我认为最好的解决方案是使用该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')
#<URI::Generic:0xb7c0a190 URL:/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"
Run Code Online (Sandbox Code Playgroud)

否则,您可以捕获正则表达式:/^(.*?)\?(.*?)$/.然后$1$2你想要的东西.(URI虽然在这种情况下更有意义.)


Miz*_*zor 6

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

"abc?def".split("?") => ["abc", "def"]
Run Code Online (Sandbox Code Playgroud)

编辑:呸,慢;)