删除字符串中定界符后的所有字符

时间:2019-10-28 22:06:56

标签: string go delimiter trim

我正在用golang构建一个Web爬虫应用程序。

下载页面的HTML之后,我将URL分开。  向我提供其中包含“#”的URL,例如“ en.wikipedia.org/wiki/Race_condition#Computing”。我想摆脱“#”之后的所有字符,因为它们总会导致相同的页面。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

使用url软件包:

u, _ := url.Parse("SOME_URL_HERE")
u.Fragment = ""
return u.String()

答案 1 :(得分:2)

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]
 }