تقسيم سلسلة بناءً على العنصر الأول في Golang
عند تحليل أسماء فروع git، من الضروري تقسيم السلسلة إلى جهاز التحكم عن بعد و اسم الفرع. بينما بدا التقسيم في البداية بالشرطة المائلة الأولى منطقيًا، ظهرت التحديات عندما تحتوي أسماء الفروع على خطوط مائلة متعددة.
النهج الأولي
اعتمد التنفيذ الأولي على العنصر الأول في التقسيم شريحة.func ParseBranchname(branchString string) (remote, branchname string) {
branchArray := strings.Split(branchString, "/")
remote = branchArray[0]
branchname = branchArray[1]
return
}
النهج المنقح لاستيعاب أسماء الفروع ذات الشرطة المائلة، تم تعديل الكود لدمج العناصر المتبقية مرة أخرى على الشرطة المائلة.
]func ParseBranchname(branchString string) (عن بعد، سلسلة اسم الفرع) { BranchArray:= strings.Split(branchString, "/") بعيد = فرعصفيف[0] نسخة (branchArray[0:]، BranchArray[0 1:]) BranchArray[len(branchArray)-1] = "" BranchArray = BranchArray[:len(branchArray)-1] اسم الفرع = strings.Join(branchArray, "/") يعود
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 وما فوق، يتوفر حل بديل باستخدام strings.SplitN مع n=2. هذا يحد من النتيجة إلى سلسلتين فرعيتين فقط، مما يحقق التقسيم المطلوب بشكل فعال.
func ParseBranchname(branchString string) (remote, Branchname string) { BranchArray:= strings.SplitN(branchString, "/", 2) بعيد = فرعصفيف[0] اسم الفرع = فرع صفيف [1] يعود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