"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como dividir uma string com base no primeiro elemento em Golang?

Como dividir uma string com base no primeiro elemento em Golang?

Publicado em 2024-11-11
Navegar:698

How to Split a String Based on the First Element in Golang?

Dividindo uma string com base no primeiro elemento em Golang

Ao analisar nomes de ramificações git, é essencial dividir a string em remoto e nome da filial. Embora inicialmente a divisão pela primeira barra parecesse lógica, surgiram desafios quando os nomes das filiais continham várias barras.

Abordagem inicial

A implementação inicial baseou-se no primeiro elemento da divisão slice.

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

Abordagem revisada

Para acomodar nomes de filiais com barras, o código foi modificado para mesclar os elementos restantes de volta na barra.

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
}

Solução alternativa usando SplitN

Para Go versões 1.18 e superiores, uma solução alternativa está disponível usando strings.SplitN com n=2. Isso limita o resultado a apenas duas substrings, alcançando efetivamente a divisão desejada.

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

Esta solução simplifica o processo extraindo diretamente as substrings necessárias sem manipulação adicional.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3