我下面舉個例子字符串:將字符串拆分成哈希?
"[email protected]&user_id=13&last_seen=January 14, 2013"
我需要被轉換成一個散列:
{ :email=>[email protected], :user_id=>13, :last_seen => 'January 14, 2013' }
我怎麼能這樣做?鍵和值可以是任何東西(它們不總是email
和user_id
),並且可能有幾十個。
我下面舉個例子字符串:將字符串拆分成哈希?
"[email protected]&user_id=13&last_seen=January 14, 2013"
我需要被轉換成一個散列:
{ :email=>[email protected], :user_id=>13, :last_seen => 'January 14, 2013' }
我怎麼能這樣做?鍵和值可以是任何東西(它們不總是email
和user_id
),並且可能有幾十個。
使用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"}
str = "[email protected]&user_id=13&last_seen=January 14, 2013"
Hash[*str.split(/=|&/)]
如果你在Rails的是,你可以象徵鍵與Hash#symbolize_keys
,否則你可以自己做。
是否有任何第一個使用第二個的理由是什麼?第一個似乎與我的示例字符串正常工作。 – Shpigford
@Shpigford:第一個是真正的答案,你應該實際使用的方法。第二個答案是在這裏教你'Hash []'語法和'String#split'方法。但是,請注意,解析,甚至解析單個行,這是一個超出諸如split之類的簡單方法的任務。 –
如何下面:
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"}
今天我從這裏學到了很好的東西,2個新的圖書館。 :) –