2014-08-31 62 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。