为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
德玛西亚99 2023-07-31 16:15:30
我正在 golang 中构建一个网络爬虫应用程序。下载页面的 HTML 后,我将 URL 分离出来。我看到的 URL 中含有“#s”,例如“en.wikipedia.org/wiki/Race_condition#Computing”。我想删除“#”后面的所有字符,因为这些字符无论如何都会指向同一页面。对于如何做到这一点有什么建议吗?
查看完整描述

2 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

使用该url包:

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

u.Fragment = ""

return u.String()


查看完整回答
反对 回复 2023-07-31
?
冉冉说

TA贡献1877条经验 获得超1个赞

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]

 }


查看完整回答
反对 回复 2023-07-31
  • 2 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信