私はルビーで解析したい非常に単純な文字列を持っており、最もエレガントな解決策を見つけようとしています。文字列の形式は/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"]
編集:ああ、遅くする;)