net.parseip()
只能解析不带冒号以及端口号的ip4/ip6
127.0.0.1
、2001:db8::68
127.0.0.1:8080
、www.baidu.com
url.parse()
最好只用来解析标准url,不能用来验证url的正确性func main() { ip1 := "www.baidu.com" ip2 := "127.0.0.1" ip3 := "127.0.0.1:8080" parsedip1 := net.parseip(ip1) parsedip2 := net.parseip(ip2) parsedip3 := net.parseip(ip3) fmt.println("net.parseip: ", parsedip1, parsedip2, parsedip3) fmt.println() url1 := "127.0.0" url2 := "abc" url3 := "127.0.0.1:8080" url4 := "http://127.0.0.1:8080/url" parsedurl1, err := url.parse(url1) if err != nil { fmt.println("error: ", err) } parsedurl2, err := url.parse(url2) if err != nil { fmt.println("error: ", err) } parsedurl3, err := url.parse(url3) if err != nil { fmt.println("error: ", err) } parsedurl4, err := url.parse(url4) if err != nil { fmt.println("error: ", err) } fmt.println("1: ", parsedurl1, "2: ", parsedurl2, "3: ", parsedurl3, "4: ", parsedurl4) } /* 输出结果: net.parseip: <nil> 127.0.0.1 <nil> error: parse 127.0.0.1:8080: first path segment in url cannot contain colon 1: 127.0.0 2: abc 3: <nil> 4: http://127.0.0.1:8080/url */
go get github.com/asaskevich/govalidator
govalidator.isurl()
func main() { rawurl := "http://127.0.0.1:8080/url/123" changehost := "192.168.1.1" newurl, _ := url.parse(rawurl) // host newurlhost := newurl.hostname() // port newurlport := newurl.port() // path newurlpath := newurl.path // url类型转string stringurl := newurl.string() // 修改url host newurl.host = changehost + ":" + newurl.port() fmt.println(newurlhost, newurlport, newurlpath, stringurl, newurl) }
其他相关方法:
- host、port
net.splithostport()
==>host、port、error
u := strings.split(url, ":")
==>host := u[0]
- path
url := http://www.a.com/123
==>base := path.base(url)
fmt.println(base)
==>123
以上结合可完成关于golang操作url的大部分问题
如对本文有疑问, 点击进行留言回复!!
网友评论