首页 > 解决方案 > 仅按 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
}

有没有更清洁的方法来做到这一点?

标签: gosplitslice

解决方案


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

func ParseBranchname(branchString string) (remote, branchname string) {
    branchArray := strings.SplitN(branchString, "/", 2)
    remote = branchArray[0]
    branchname = branchArray[1]
    return
}

推荐阅读