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.
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