如何使用空格和特殊字符扫描URL的特定字符串?

时间:2012-06-30 07:17:54

标签: ruby-on-rails ruby ruby-on-rails-3

我在我的请求网址上使用stringscanner以获取用户当前所选类别的名称,但我在处理空格和特殊字符方面遇到了困难。

request.url.scan(/\?category=\w+/).to_s.gsub('?category=', '')

网址示例后跟结果

http://localhost:3000/search?category=dog&search=&utf8=%E2%9C%93 => ["dog"]
http://localhost:3000/search?category=dog.com&search=&utf8=%E2%9C%93 => ["dog"]
http://localhost:3000/search?category=dog+cat&search=&utf8=%E2%9C%93 => ["dog"]

我正试图[[dog“] [”dog.com“]和[”dog cat“],但目前卡住了。有什么想法吗?

注意:考虑从类别中删除空格并将其替换为短划线作为多个空格可能会有问题,但如果可以创建一个函数来统治它们,那就太棒了。

2 个答案:

答案 0 :(得分:3)

这是Rails,您是不是只使用params[:category]

答案 1 :(得分:2)

如果您尝试提取参数,则可以使用parse_query

uri = "http://localhost:3000/search?category=dog+cat&search=&utf8=%E2%9C%93"
result = Rack::Utils.parse_query(URI(uri).query) #=> {"category"=>"dog cat", "search"=>"", "utf8"=>"\xE2\x9C\x93"}
result["category"] #=> dog cat