Golang の最初の要素に基づいて文字列を分割する
git ブランチ名を解析するときは、文字列をリモートと支店名。最初のスラッシュによる分割は当初論理的であるように見えましたが、ブランチ名に複数のスラッシュが含まれている場合に問題が発生しました。
初期アプローチ
初期実装は分割の最初の要素に依存していました。スライス.
func ParseBranchname(branchString string) (remote, branchname string) {
branchArray := strings.Split(branchString, "/")
remote = branchArray[0]
branchname = branchArray[1]
return
}
改訂されたアプローチ
スラッシュを含むブランチ名に対応するために、残りの要素をスラッシュにマージするようにコードが変更されました。
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
}
SplitN を使用した代替ソリューション
Go バージョン 1.18 以降の場合、n=2 の strings.SplitN を使用した代替ソリューションが利用可能です。これにより、結果が 2 つの部分文字列のみに制限され、効果的に目的の分割が実現されます。
func ParseBranchname(branchString string) (remote, branchname string) {
branchArray := strings.SplitN(branchString, "/", 2)
remote = branchArray[0]
branchname = branchArray[1]
return
}
このソリューションは、追加の操作を行わずに必要な部分文字列を直接抽出することでプロセスを簡素化します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3