0Pricing
C# Academy · درس

النطاقات مع المصفوفات والسلاسل النصية

استخرجوا شرائح من المصفوفات وspans والسلاسل الفرعية

النطاقات مع المصفوفات والسلاسل النصية درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.

اقتطاع المصفوفات

الاستخدام الأكثر شيوعًا للنطاقات هو اقتطاع المصفوفات. يعيد array[1..3] مصفوفة جديدة تحتوي على العناصر المحددة.

using System;

int[] data = { 10, 20, 30, 40, 50 };
int[] middle = data[1..3];
Console.WriteLine(string.Join(",", middle)); // 20,30

أجزاء المصفوفات نسخ

ينشئ اقتطاع النطاق للمصفوفات مصفوفة جديدة ويَنسخ العناصر إليها. ولا يؤثر تعديل الجزء في المصفوفة الأصلية.

using System;

int[] original = { 1, 2, 3, 4 };
int[] slice = original[0..2];
slice[0] = 99;
Console.WriteLine(original[0]); // 1 (unchanged)
Console.WriteLine(slice[0]);    // 99

السلاسل الفرعية باستخدام Range

يدعم مفهرس string النوع Range، مما يتيح الحصول على سلاسل فرعية من دون استدعاء Substring مع الإزاحات والأطوال.

using System;

string text = "Hello, World";
string hello = text[0..5];
Console.WriteLine(hello); // Hello

اقتطاع السلاسل من النهاية

اجمعوا بين النطاقات و^ للحصول على ذيل سلسلة نصية، مثل امتداد ملف.

using System;

string file = "report.csv";
string ext = file[^3..];
Console.WriteLine(ext); // csv

حرف واحد باستخدام Index

تعيد فهرسة سلسلة نصية باستخدام Index واحد قيمة char واحدة. استخدموا ^1 للحرف الأخير.

using System;

string s = "Coddy";
char last = s[^1];
Console.WriteLine(last); // y

حذف العنصر الأول أو الأخير

تجعل النطاقات المفتوحة من أحد الطرفين حذف عنصر واحد أمرًا بسيطًا: يحذف ..^1 العنصر الأخير، ويحذف 1.. العنصر الأول.

using System;

string quoted = "[value]";
string inner = quoted[1..^1];
Console.WriteLine(inner); // value

تقسيم سلسلة نصية إلى أجزاء

يمكنكم تقسيم النص عند موضع معروف باستخدام جزأين مقتطعين بالنطاقات.

using System;

string code = "2026-05-30";
string year = code[..4];
string month = code[5..7];
string day = code[8..];
Console.WriteLine(year + " / " + month + " / " + day); // 2026 / 05 / 30

الامتدادات للاقتطاع دون نسخ

إذا أردتم اقتطاعًا من دون تخصيص ذاكرة، فاستخدموا AsSpan(). إذ تمثل شريحة الامتداد نافذةً على الذاكرة الأصلية، وليست نسخةً منها.

using System;

ReadOnlySpan<char> span = "Hello, World".AsSpan();
ReadOnlySpan<char> word = span[7..];
Console.WriteLine(word.ToString()); // World

النطاقات في الحلقات

يمكنكم التكرار مباشرةً على مصفوفة مقتطعة باستخدام foreach.

using System;

int[] data = { 2, 4, 6, 8, 10 };
foreach (int n in data[1..4])
    Console.Write(n + " "); // 4 6 8
Console.WriteLine();

التحقق من الحدود

تؤدي الأجزاء الخارجة عن النطاق إلى الاستثناء ArgumentOutOfRangeException، لذلك تفشل عمليات القراءة الزائدة غير المقصودة بسرعة بدلًا من إفساد البيانات.

using System;

int[] d = { 1, 2, 3 };
try { var _ = d[1..10]; }
catch (ArgumentOutOfRangeException) { Console.WriteLine("slice out of bounds"); }

محلل عملي

إليكم محللًا صغيرًا يستخرج الاسم والنطاق من بريد إلكتروني باستخدام النطاقات وIndexOf.

using System;

string email = "ada@coddy.dev";
int at = email.IndexOf('@');
string user = email[..at];
string domain = email[(at + 1)..];
Console.WriteLine(user + " | " + domain); // ada | coddy.dev

تحقق سريع

اختبروا فهمكم لاقتطاع النطاقات من المصفوفات والسلاسل النصية.

مراجعة

تعلّمتم كيفية تطبيق النطاقات على المصفوفات والسلاسل النصية.

  • يعيد array[1..3] مصفوفة جديدة منسوخة.
  • يعيد string[a..b] سلسلة فرعية، بينما يعيد Index واحد قيمة char.
  • يحذف ..^1 و1.. عنصرًا واحدًا.
  • يقتطع AsSpan() من دون تخصيص ذاكرة.

الأسئلة الشائعة

هل درس «النطاقات مع المصفوفات والسلاسل النصية» مجاني؟

نعم — نص درس «النطاقات مع المصفوفات والسلاسل النصية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.

ماذا ستتعلم في «النطاقات مع المصفوفات والسلاسل النصية»؟

استخرجوا شرائح من المصفوفات وspans والسلاسل الفرعية تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «النطاقات مع المصفوفات والسلاسل النصية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. النوع Index والعامل ^
  2. النوع Range والعامل ..
  3. النطاقات مع المصفوفات والسلاسل النصية
  4. الأنواع المخصّصة الداعمة للنطاقات
← العودة إلى C# Academy