التعامل مع النصوص في لغة C# - IndexOf
بسم الله الرحمن الرحيم
لازلت في مجال التعامل مع النصوص في لغة الـ C#
اليوم راح نتكلم عن خاصية الـ IndexOf . وفي ايش راح تفيدنا.
هالخاصيه بأختصار شديد ، تبحث لك عن رقم الخانه التي يقع فيها الحرف المراد البحث عنه
مثلاً ، عندنا اسم وليكن Hmod. بمجرد النظر راح تعرف ان حرف الـ o يقع في الخانه رقم 2 "وهنا ناخذ فالحسبان اننا نتكلم عن index معناته ان العد يبدأ من الصفر وليس الواحد".
طيب انا ابي المشروع هو اللي يبحث لي عن الحرف ويرجع لي قيمة الـ index.
طريقة كتابة الكود بتكون بهذا الشكل :
string name = "Hmod";
int x = name.indexof('o');
عرفنا متغير من نوع نصي name واسندنا له قيمة الاسم ، وبعدها عرفنا متغير رقمي X ، يجي واحد ويتسائل ، ليش من نوع رقمي ؟ طبعاً الجواب لأن القيمه المسترجعه من الـ IndexOf راح تكون رقم.
طيب لو افترضنا اننا ادخلنا قيمه بهذا الشكل Hmood . عندنا حرفين o ياترى اي واحد منهم بيرجع لي ؟ هل بيرجع index تبع الاول او الثاني ؟؟ فكر شوي قبل تكمل.
الآله تعمل على البحث عن index الحرف o. متى ماوجدت الحرف تلقائياً راح تاخذ index تبعه وتنهي البحث. معناته راح يرجع لي اول واحد.
طيب انا ابي الاخير ، الاول مايعنيني لسبب ما. بكذا نستخدم الخاصية الثانيه اللي هي LastIndexOf راح تبحث لك عن index القيمه الاخيره "في حالة تكررت الحرف المراد البحث عنه".
طريقة تعريفها راح تكون نفس الـ indexOf :
string name = "Hmood";
int x = name.lastindexof('o');
طيب نصعب الموضوع شوي لو افترضنا ان عندي مدخلات من نوع نص ، وهي عباره عن الاسم الاول والاخير لشخص ما ، ولنفترض Hmod AlSubaie
ابغى الاله اول ماتشوف النص ، تستقطع لي الجزء الاول من الاسم وتحطه في متغير وتستقطع الاسم الثاني وتحطه في متغير اخر .
ولأن المهمه المطلوبه استقطاع ، معناته راح استخدم SubString. ولكن الـ SubString لو نتذكرها شوي ، نجد انه نستخدمها في حالتين :
اما نعطيه رقم الـ Index اللي راح يبدا الاستقطاع منه الى نهاية الجمله .
او اننا نعطيه الـ Index و Length اللي راح يتوقف عنده.
هنا يجي دور الـ IndexOf واللي من خلالها راح نعرف الـ Length عشان نستقطع الاسم الاول ، وايضاً الـ Index عشان نبدأ بأستقطاع الاسم الاخير .
طبعاً منطقياً اي اسمين راح يكون بينهم مسافه ، وهذا هو المفتاح اللي راح نبني شغلنا عليه. الكلام كثير خلينا ناخذ مثال يوضح الامور :D
// هنا تم اضافة الاسم
string input = "Hmod AlSubaie";
// تعريف متغير لكي يحمل الاسم الاول
string FirstName = String.Empty;
// تعريف متغير لكي يحمل الاسم الاخير
string LastName = String.Empty;
// راح يكون فيه قيمة الاندكس للمسافه بين الاسمين
int X;
// تم اسناد قيمة الاندكس للمسافه
X = input.IndexOf(' ');
// تم استقطاع الاسم الاول
FirstName = input.Substring(0, X+1);
// تم استقطاع الاسم الاخير
LastName = input.Substring(X);
lbl.Text = FirstName;
lbl2.Text = LastName;
بكذا يكون قدرنا نستخدم خاصية الـ IndexOf لغرض استخدام خاصية الـ SubString
اتمنى ان يكون المقال خفيف مثل ماقال الاخ عبدالملك الثاري :D
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !