Golang の最初の要素に基づいて文字列を分割する
git ブランチ名を解析するときは、文字列をリモートと支店名。最初のスラッシュによる分割は当初論理的であるように見えましたが、ブランチ名に複数のスラッシュが含まれている場合に問題が発生しました。
初期アプローチ
初期実装は分割の最初の要素に依存していました。スライス。
<code class="go">func ParseBranchname(branchString string) (remote, branchname string) { branchArray := strings.Split(branchString, "/") remote = branchArray[0] branchname = branchArray[1] return }</code>
改訂アプローチ
スラッシュを含むブランチ名に対応するために、残りの要素をスラッシュにマージして戻すようにコードが変更されました。
<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>
SplitN を使用した代替ソリューション
Go バージョン 1.18 以降では、strings.SplitN を使用した代替ソリューションが利用可能です。 n=2。これにより、結果が 2 つの部分文字列のみに制限され、目的の分割が効果的に達成されます。
<code class="go">func ParseBranchname(branchString string) (remote, branchname string) { branchArray := strings.SplitN(branchString, "/", 2) remote = branchArray[0] branchname = branchArray[1] return }</code>
このソリューションでは、追加の操作を行わずに必要な部分文字列を直接抽出することでプロセスが簡素化されます。
以上がGolang の最初の要素に基づいて文字列を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。