Diviser une chaîne en fonction du premier élément dans Golang
Lors de l'analyse des noms de branches git, il est essentiel de diviser la chaîne en télécommande et nom de la succursale. Bien qu'au départ, la division par la première barre oblique semblait logique, des défis 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. tranche.
<code class="go">func ParseBranchname(branchString string) (remote, branchname string) { branchArray := strings.Split(branchString, "/") remote = branchArray[0] branchname = branchArray[1] return }</code>
Révisé Approche
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.
<code class="go">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 }</code>
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 efficacement la division souhaitée.
<code class="go">func ParseBranchname(branchString string) (remote, branchname string) { branchArray := strings.SplitN(branchString, "/", 2) remote = branchArray[0] branchname = branchArray[1] return }</code>
Cette solution simplifie le processus en extrayant directement les sous-chaînes nécessaires sans manipulation supplémentaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!