"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo dividir una cadena según el primer elemento en Golang?

¿Cómo dividir una cadena según el primer elemento en Golang?

Publicado el 2024-11-11
Navegar:851

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

División de una cadena según el primer elemento en Golang

Al analizar los nombres de las ramas de git, es esencial dividir la cadena en el control remoto y nombre de la sucursal. Si bien inicialmente la división por la primera barra parecía lógica, surgieron desafíos cuando los nombres de las ramas contenían varias barras.

Enfoque inicial

La implementación inicial se basó en el primer elemento de la división rebanada.

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

Enfoque revisado

Para acomodar los nombres de las sucursales con barras, el código se modificó para fusionar los elementos restantes nuevamente en la 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
}

Solución alternativa usando SplitN

Para las versiones de Go 1.18 y superiores, hay una solución alternativa disponible usando strings.SplitN con n=2. Esto limita el resultado a solo dos subcadenas, logrando efectivamente la división deseada.

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

Esta solución simplifica el proceso extrayendo directamente las subcadenas necesarias sin manipulación adicional.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3