تخطَّ إلى المحتوى

strings.CutLast

تقطيع نص عند آخر ظهور لفاصل strings.CutLast

strings.CutLast (منذ Go 1.27) تقطّع نصًّا عند آخر ظهور لفاصل محدَّد — معاكسة لـ strings.Cut التي تقطع عند أول ظهور، وتختصر حالات كانت تحتاج LastIndex يدويًا.

نفس فكرة bytes.CutLast لكن على النصوص. مفيدة جدًا لاستخراج الجزء الأخير من نص يحتوي فاصلًا متكرّرًا — مثل امتداد ملف بعد آخر نقطة، أو اسم الحزمة الأخير من مسار Go كامل مفصول بشرطات مائلة، أو القيمة بعد آخر علامة = بنص مفاتيح-قيم متداخل.

قبلها كان لازم strings.LastIndex ثم تقطيع النص يدويًا بحساب الفهرس، مع خطر الخطأ بحساب طول الفاصل عند التقطيع. strings.CutLast تعيد ثلاث قيم دائمًا: before (كل ما قبل الفاصل الأخير)، after (كل ما بعده)، وfound (هل وُجد الفاصل أصلًا).

الصياغة

func CutLast(s, sep string) (before, after string, found bool)

📄 مثال

path := "github.com/user/repo/pkg/utils"
before, after, found := strings.CutLast(path, "/")
fmt.Println(before)   // github.com/user/repo/pkg
fmt.Println(after)    // utils
fmt.Println(found)    // true

أهم النقاط

العنصرالوظيفة
beforeكل ما قبل آخر ظهور للفاصل — النص كاملًا لو الفاصل غير موجود
afterكل ما بعد آخر ظهور للفاصل — نص فارغ لو الفاصل غير موجود
foundtrue لو وُجد الفاصل بالنص، false غير ذلك

💡 نصائح عملية

  • لاستخراج آخر جزء من مسار (اسم ملف من مسار كامل مثلًا)، CutLast أوضح من LastIndex اليدوي وأقل عرضة لخطأ حساب الفهرس

⚠️ أخطاء شائعة

  • استخدام strings.Cut (يقطع عند أول ظهور) بدل CutLast لفاصل يتكرّر أكثر من مرّة بالنص — النتيجتان مختلفتان تمامًا

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار GO الكامل بالعربي.