2013-05-22 196 views

回答

7

使用CGI庫你已經免費獲得:

require 'cgi' 

parsed = CGI.parse("[email protected]&user_id=13&last_seen=January 14, 2013") 

# => {"email"=>["[email protected]"], "user_id"=>["13"], "last_seen"=>["January 14, 2013"]} 

或者,如果你使用rack

require 'rack/utils' 

parsed = Rack::Utils.parse_query("[email protected]&user_id=13&last_seen=January 14, 2013") 

# => {"email"=>"[email protected]", "user_id"=>"13", "last_seen"=>"January 14, 2013"} 
+0

今天我從這裏學到了很好的東西,2個新的圖書館。 :) –

2
str = "[email protected]&user_id=13&last_seen=January 14, 2013" 
Hash[*str.split(/=|&/)] 

如果你在Rails的是,你可以象徵鍵與Hash#symbolize_keys,否則你可以自己做。

+0

是否有任何第一個使用第二個的理由是什麼?第一個似乎與我的示例字符串正常工作。 – Shpigford

+0

@Shpigford:第一個是真正的答案,你應該實際使用的方法。第二個答案是在這裏教你'Hash []'語法和'String#split'方法。但是,請注意,解析,甚至解析單個行,這是一個超出諸如split之類的簡單方法的任務。 –

0

如何下面:

require 'uri' 

str = "[email protected]&user_id=13&last_seen=January 14, 2013" 
URI.decode_www_form(str) 
# => [["email", "[email protected]"], 
#  ["user_id", "13"], 
#  ["last_seen", "January 14, 2013"]] 
Hash[URI.decode_www_form(str)] 
# => {"email"=>"[email protected]", 
#  "user_id"=>"13", 
#  "last_seen"=>"January 14, 2013"}