我目前有一个类似["green%20books"]
的字符串,我希望它能阅读["green books"]
。
我认为谷歌搜索会很快产生结果,但每个人都想把空格变成%20s
。不是相反。
非常感谢任何帮助!
编辑:
这是我正在使用的功能,我很困惑在这里解码URL。我尝试删除URI.encode文本,但这破坏了功能。
def self.get_search_terms(search_url)
hash = CGI.parse(URI.parse(URI.encode(search_url)).query) #returns a hash
keywords = []
hash.each do |key, value|
if key == "q" || key == "p"
keywords << value
end
end
keywords
end
答案 0 :(得分:20)
你可以使用URI的'unencode'方法。 (别名为解码)
require 'uri'
URI.decode("green%20books")
# => "green books"
这不仅会用空格替换“%20”,而且每个uri编码的字符都是我想要的。
答案 1 :(得分:5)
CGI::unescape
会做你想做的事:
1.9.2-p320 :001 > require 'cgi'
=> true
1.9.2-p320 :002 > s = "green%20books"
=> "green%20books"
1.9.2-p320 :003 > CGI.unescape(s)
=> "green books"
另一种选择(如YenTheFirst所述)可能是URI.decode
。但是,I read a discussion that it would be deprecated - 尽管那是在2010年。
无论如何,既然你在询问数组,你可能会map
使用该方法:
ary.map { |s| CGI.unescape(s) }
答案 2 :(得分:3)
您可以使用正则表达式:
string = "green%20books"
string.gsub!('%20', ' ')
puts string