登录
首页 >  Golang >  Go问答

只使用首个元素对golang字符串进行拆分

来源:stackoverflow

时间:2024-02-19 18:09:23 499浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《只使用首个元素对golang字符串进行拆分》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我正在尝试解析 git 分支名称并拆分它们,以便我可以分离远程名称和分支名称

以前我只是在第一个斜杠处拆分:

func parsebranchname(branchstring string) (remote, branchname string) {
    brancharray := strings.split(branchstring, "/")
    remote = brancharray[0]
    branchname = brancharray[1]
    return
}

但我忘记了有些人也在 git 分支名称中使用斜杠,甚至多个斜杠!

现在,我正在从分割中取出切片中的第一个元素,然后移动完成的每个元素并合并回斜杠:

func ParseBranchname(branchString string) (remote, branchname string) {
    branchArray := strings.Split(branchString, "/")
    remote = branchArray[0]

    copy(branchArray[0:], branchArray[0+1:])
    branchArray[len(branchArray)-1] = ""
    branchArray = branchArray[:len(branchArray)-1]

    branchname = strings.Join(branchArray, "/")
    return
}

有没有更干净的方法来做到这一点?


正确答案


对于 go >= 1.18,请参阅 this answer

对于 go < 1.18:

使用 strings.SplitNn=2 将结果限制为两个子字符串。

func parsebranchname(branchstring string) (remote, branchname string) {
    brancharray := strings.splitn(branchstring, "/", 2)
    remote = brancharray[0]
    branchname = brancharray[1]
    return
}

转到 1.18

使用strings.Cut

func ParseBranchname(branchString string) (remote, branchname string) {
    remote, branchname, _ = strings.Cut(branchString, "/")
    return
}

(请注意,此代码片段忽略第三个返回值,一个布尔值,它告诉是否在输入字符串中找到了分隔符。)

正如 go 1.18 发行说明中提到的,cut “可以替代和简化 indexindexbyteindexrunesplitn 的许多常见用法”。特别是 splitnn=2

演示 — 最初由 @mkopriva 在 comment 中发布 — 修改为包含 cut 的示例:https://go.dev/play/p/bjBhnr3Hg5O

理论要掌握,实操不能落!以上关于《只使用首个元素对golang字符串进行拆分》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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