解析查询字符串

    qs = "post[id]=4&post[nick]=_why&post[message]=GROSS & FOO!&a=1"
    hash1 = {}
    hash2 = {}
    resulthash = {}
    count = 0
    qs.scan(/(post|a)(\[|=)(.*?)(?=(&post\[|&a=|$))/) {
      var = $1 << $2 << $3
      case var
      when /^(post)\[(.*?)\]=(.*?)$/
        count += 1
        postnum = $1 << count.to_s
        hash1.update(postnum => {$2 => $3})
      when /^(a)=(.*?)$/
        resulthash.update($1 => $2)
      end
    }
    hash1.each_pair {|k, v| hash2.update(v)}
    resulthash.update("post" => hash2)
    puts resulthash.inspect  # => {"a"=>"1", "post"=>{"message"=>"GROSS & FOO!", "nick"=>"_why", "id"=>"4"}}

 

你可能感兴趣的:(字符串)