"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تقسيم سلسلة بناءً على العنصر الأول في Golang؟

كيفية تقسيم سلسلة بناءً على العنصر الأول في Golang؟

تم النشر بتاريخ 2024-11-11
تصفح:952

How to Split a String Based on the First Element in Golang?

تقسيم سلسلة بناءً على العنصر الأول في 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