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 | كل ما بعد آخر ظهور للفاصل — نص فارغ لو الفاصل غير موجود |
| found | true لو وُجد الفاصل بالنص، false غير ذلك |
💡 نصائح عملية
- لاستخراج آخر جزء من مسار (اسم ملف من مسار كامل مثلًا)، CutLast أوضح من LastIndex اليدوي وأقل عرضة لخطأ حساب الفهرس
⚠️ أخطاء شائعة
- استخدام strings.Cut (يقطع عند أول ظهور) بدل CutLast لفاصل يتكرّر أكثر من مرّة بالنص — النتيجتان مختلفتان تمامًا
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار GO الكامل بالعربي.