Diviser une chaîne en fonction du premier élément dans Golang
Lors de l'analyse des noms de branche git, il est essentiel de diviser la chaîne en parties distantes et nom de la succursale. Bien qu'au départ, la division par la première barre oblique semblait logique, des problèmes sont survenus lorsque les noms de branche contenaient plusieurs barres obliques.
Approche initiale
La mise en œuvre initiale reposait sur le premier élément de la division. slice.
func ParseBranchname(branchString string) (remote, branchname string) {
branchArray := strings.Split(branchString, "/")
remote = branchArray[0]
branchname = branchArray[1]
return
}
Approche révisée
Pour accommoder les noms de branches avec des barres obliques, le code a été modifié pour fusionner les éléments restants sur la barre oblique.
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
}
Solution alternative utilisant SplitN
Pour les versions Go 1.18 et supérieures, une solution alternative est disponible en utilisant strings.SplitN avec n=2. Cela limite le résultat à seulement deux sous-chaînes, obtenant ainsi la division souhaitée.
func ParseBranchname(branchString string) (remote, branchname string) {
branchArray := strings.SplitN(branchString, "/", 2)
remote = branchArray[0]
branchname = branchArray[1]
return
}
Cette solution simplifie le processus en extrayant directement les sous-chaînes nécessaires sans manipulation supplémentaire.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3