登录
首页 >  Golang >  Go问答

去除字符串中定界符后的所有内容

来源:stackoverflow

时间:2024-02-25 15:33:24 472浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《去除字符串中定界符后的所有内容》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

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

下载页面的 HTML 后,我将 URL 分离出来。 我看到的 URL 中含有“#s”,例如“en.wikipedia.org/wiki/Race_condition#Computing”。我想删除“#”后面的所有字符,因为这些字符无论如何都会指向同一页面。关于如何做到这一点有什么建议吗?


解决方案


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

使用url包:

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

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《去除字符串中定界符后的所有内容》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>