7

私はルビーで解析したい非常に単純な文字列を持っており、最もエレガントな解決策を見つけようとしています。文字列の形式は/xyz/mov/exdaf/daeed.mov?arg1=blabla&arg2=3bla3blaです。

私が欲しいのは:string1:/xyz/mov/exdaf/daeed.mov string2:arg1 = blabla&arg2 = 3bla3bla

だから基本的にトークン化?

しかし、良い例を見つけることができません。どんな助けでもいただければ幸いです。

4

3 に答える 3

11

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ただし、この場合はより理にかなっています。)

于 2009-07-30T17:55:03.053 に答える
10

最初の文字列を疑問符で分割します。

str.split("?")
=> ["/xyz/mov/exdaf/daeed.mov", "arg1=blabla&arg2=3bla3bla"]
于 2009-07-30T17:42:56.323 に答える
6

これはあなたが探しているもののようです、文字列組み込みの分割関数:

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

編集:ああ、遅くする;)

于 2009-07-30T17:46:37.237 に答える