删除字符串中定界符后的所有字符
Remove all characters after a delimiter in a string
我正在用 golang 构建网络爬虫应用程序。
下载页面 HTML 后,我将 URL 分开。
我看到其中包含“#s”的 URL,例如 "en.wikipedia.org/wiki/Race_condition#Computing"。我想去掉“#”后面的所有字符,因为这些字符无论如何都会指向同一页面。有什么建议吗?
使用url
包:
u, _ := url.Parse("SOME_URL_HERE")
u.Fragment = ""
return u.String()
Luke Joshua Park 对答案的改进是解析相对于源页面 URL 的 URL。这会根据页面上可能相对 URL 的内容创建绝对 URL(未指定方案、未指定主机、相对路径)。另一个改进是检查和处理错误。
func clean(pageURL, linkURL string) (string, error) {
p, err := url.Parse(pageURL)
if err != nil {
return "", err
}
l, err := p.Parse(linkURL)
if err != nil {
return "", err
}
l.Fragment = "" // chop off the fragment
return l.String()
}
如果您对获得绝对 URL 不感兴趣,则将 # 后的所有内容都砍掉。这是有效的,因为在 URL 中唯一有效使用 # 是片段分隔符。
func clean(linkURL string) string {
i := strings.LastIndexByte(linkURL, '#')
if i < 0 {
return linkURL
}
return linkURL[:i]
}
我正在用 golang 构建网络爬虫应用程序。
下载页面 HTML 后,我将 URL 分开。 我看到其中包含“#s”的 URL,例如 "en.wikipedia.org/wiki/Race_condition#Computing"。我想去掉“#”后面的所有字符,因为这些字符无论如何都会指向同一页面。有什么建议吗?
使用url
包:
u, _ := url.Parse("SOME_URL_HERE")
u.Fragment = ""
return u.String()
Luke Joshua Park 对答案的改进是解析相对于源页面 URL 的 URL。这会根据页面上可能相对 URL 的内容创建绝对 URL(未指定方案、未指定主机、相对路径)。另一个改进是检查和处理错误。
func clean(pageURL, linkURL string) (string, error) {
p, err := url.Parse(pageURL)
if err != nil {
return "", err
}
l, err := p.Parse(linkURL)
if err != nil {
return "", err
}
l.Fragment = "" // chop off the fragment
return l.String()
}
如果您对获得绝对 URL 不感兴趣,则将 # 后的所有内容都砍掉。这是有效的,因为在 URL 中唯一有效使用 # 是片段分隔符。
func clean(linkURL string) string {
i := strings.LastIndexByte(linkURL, '#')
if i < 0 {
return linkURL
}
return linkURL[:i]
}