3 回答
TA贡献1827条经验 获得超8个赞
这是一个简单的解决方案,适用于与您具有相同结构的 URL(您可以改进以适应具有其他结构的 URL)
package main
import (
"fmt"
"net/url"
)
var path = "http://localhost:8080/id/123"
func getFirstParam(path string) (ps string) {
// ignore first '/' and when it hits the second '/'
// get whatever is after it as a parameter
for i := 1; i < len(path); i++ {
if path[i] == '/' {
ps = path[i+1:]
}
}
return
}
func main() {
u, _ := url.Parse(path)
fmt.Println(u.Path) // -> "/id/123"
fmt.Println(getFirstParam(u.Path)) // -> "123"
}
或者,正如@gollipher 建议的那样,使用path包
import "path"
func main() {
u, _ := url.Parse(path)
ps := path.Base(u.Path)
}
使用这种方法它比正则表达式更快,前提是您事先知道您获得的 URL 的结构。
TA贡献1828条经验 获得超3个赞
您可以尝试使用正则表达式如下:
import "regexp"
re, _ := regexp.Compile("/id/(.*)")
values := re.FindStringSubmatch(path)
if len(values) > 0 {
fmt.Println("ID : ", values[1])
}
- 3 回答
- 0 关注
- 182 浏览
添加回答
举报