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

strings.Split

تقسيم نص لأجزاء strings.Split

strings.Split يقسّم نصًّا لشريحة من الأجزاء بناءً على فاصل محدَّد، مع سلوك خاص عند غياب الفاصل أو كونه فارغًا.

strings.Split تأخذ نصًّا وفاصلًا، وتعيد شريحة من الأجزاء الواقعة بينهما. لو لم يظهر الفاصل بالنص أصلًا وكان الفاصل نفسه غير فارغ، تعيد الدالة شريحة بعنصر واحد فقط يساوي النص كاملًا. لو كان الفاصل نصًّا فارغًا، تُقسِّم Split بعد كل رمز UTF-8 على حدة — أي تحصل على كل حرف كعنصر منفصل. ولو كانا معًا فارغين (النص والفاصل)، تعيد شريحة فارغة تمامًا.

للتحكّم بعدد الأجزاء الناتجة استخدم strings.SplitN، وللتقسيم عند أول ظهور فقط للفاصل استخدم strings.Cut الأبسط والأسرع.

الصياغة

func Split(s, sep string) []string

📄 مثال

parts := strings.Split("تفاح,موز,عنب", ",")
fmt.Println(parts)          // [تفاح موز عنب]
fmt.Println(len(parts))     // 3

chars := strings.Split("go", "")
fmt.Println(chars)          // [g o]

أهم النقاط

العنصرالوظيفة
sep غير فارغ وغير موجودتعيد شريحة بعنصر واحد يساوي النص الأصلي كاملًا
sep فارغتقسّم بعد كل رمز UTF-8 على حدة
s و sep فارغان معًاتعيد شريحة فارغة

💡 نصائح عملية

  • لو تحتاج فقط أول جزأين استخدم strings.Cut — أوضح وأسرع من Split لهذا الغرض الشائع
  • تحقّق من len(parts) قبل الوصول لعنصر بفهرس محدَّد — عدد الأجزاء يعتمد على المدخل الفعلي لا افتراض ثابت دائمًا

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

  • افتراض عدد ثابت من الأجزاء دائمًا (مثل توقّع جزأين بالضبط) دون التحقّق من الطول الفعلي أولًا
  • استخدام Split بفاصل فارغ ظنًّا أنه يعيد شريحة فارغة — فعليًا يقسّم لكل رمز على حدة

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