Extract key, value params from the resources of a url

后端 未结 2 764
梦谈多话
梦谈多话 2021-01-26 01:50

Hi Everyone I\'m working with the next url and I have to get the key-values params from this url the url could be in the next formats:

http://www.espn.com/watch/?gameId=

相关标签:
2条回答
  • 2021-01-26 02:50

    You could do something like this... I'm assuming that _ denotes that the next 2 elements are a key/value pair... I also changed the code to handle multile values in a query param (ie: k=a&k=b) which is perfectly valid.

    def parseUrlStringToMap(URI uri) {
        if (uri.query) {
            uri.query.split('&')*.split("=").inject([:].withDefault { [] }) { m, v ->
                m[v[0]] << v[1]
                m
            }.collectEntries { k, v -> v.size() == 1 ? [k, v[0]] : [k, v] }
        } else {
            // I'm going to assume that key/values come after '_' paths
            def paths = uri.path.split('/')
            paths[paths.findIndexValues { it == '_' }.collect { (it+1)..(it+2) }].collate(2).collectEntries()
        }
    }
    
    println parseUrlStringToMap(URI.create('http://www.espn.com/watch/?gameId=1234&league=nfl&lang=es'))
    println parseUrlStringToMap(URI.create('http://www.espn.com/fantasy/story/_/id/24664478/_/key/value/fantasy-soccer-la-liga-fantasy-transfer-market-matchweek-4'))
    
    0 讨论(0)
  • 2021-01-26 02:56
    import java.nio.file.Paths
    
    def u=new URL("http://www.espn.com/fantasy/story/id/24664478/fantasy-soccer-la-liga-fantasy-transfer-market-matchweek-4")
    def p = Paths.get(u.getPath())
    
    println p[2]
    println p[3]
    

    prints

    id
    24664478
    
    0 讨论(0)
提交回复
热议问题