我有一个非常简单的字符串,我想用 ruby 解析并试图找到最优雅的解决方案。该字符串的格式为 /xyz/mov/exdaf/daeed.mov?arg1=blabla&arg2=3bla3bla
我想要的是: string1: /xyz/mov/exdaf/daeed.mov string2: 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')
#<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"
否则,您可以在正则表达式上捕获:/^(.*?)\?(.*?)$/
. 然后就是你想要的$1
。$2
(URI
虽然在这种情况下更有意义。)
在问号上拆分初始字符串。
str.split("?")
=> ["/xyz/mov/exdaf/daeed.mov", "arg1=blabla&arg2=3bla3bla"]
这似乎是您正在寻找的,字符串内置拆分功能:
"abc?def".split("?") => ["abc", "def"]
编辑:呸,慢一点;)