2014-08-31 63 views
1

我想從這個網址獲得的「令牌」的值如何從URL中的特定值在Ruby on Rails的

令牌= EC-6HV41821M6960550G

url = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-6HV41821M6960550G" 

我知道它可以由正則表達式完成,但我認爲它可以通過一些URI方法來完成。

+0

我試圖讓它變粗體:-)刪除它 – Prem 2014-08-31 10:11:03

+0

看看'URI'類。你不能一步到位。你必須結合幾個。 – sawa 2014-08-31 10:16:47

回答

4

待辦事項可以得到這樣的:

require 'uri' 

url = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxx" 

uri = URI.parse(url) 
params = CGI::parse(uri.query) 

params['token'] # => 'EC-xxx' 
+0

Thanx它真的工作!你從很多正則表達式中拯救了我.. – Prem 2014-08-31 10:41:31

0
require 'cgi' 

url = 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-6HV41821M6960550G' 

CGI.parse(url)['token'] 
+0

+1簡短版本... – Prem 2014-08-31 10:46:03

+1

-1只對'token'參數有效,但對'cmd'不起作用。 – spickermann 2014-08-31 10:51:12

+0

是的,因爲'CGI.parse'只對查詢起作用,並且像'&'然後用'='解析它,所以不用'cmd'參數就可以有'https://www.sandbox.paypal .COM/cgi-bin目錄/ webscr?cmd' – IS04 2014-08-31 10:54:07

2

爲了表明,一些其他的方法也存在: -

#!/usr/bin/env ruby 

require 'uri' 

url = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxx" 
uri = URI(url) 
URI.decode_www_form(uri.query).to_h['token'] 
# => "EC-xxx" 

閱讀方法::decode_www_form docomentation。