بعض العمليات على النصوص - سي شارب - مقـــالات - Top Coder
Welcome to our Site
الدخــول Or تسجـــيل
الأحد
2016-12-04
11:21 PM
تسجــــيل | دخـــول
الرئيسية » مقالات » سي شارب

بعض العمليات على النصوص
بعض العمليات على النصوص

مقـــدمه
سنقوم اليوم بشرح بعض العمليات الهامة على النصوص string والتي يمكن من خلالها التحكم في محتوى نص معين وتغييره .
النصوص
النص ما هو الا سلسلة من الحروف المتتابعه , فكلمة hello world ما هي الا سلسة تتكون من 11 حرفاً , حيث ان المسافه تعتبر حرفاً أيضاً , وكل حرف في السلسله له مكان index يعبر عن ترتيبه داخل السلسلة ويبدأ الترتيب كما هو معروف في السي شارب من الرقم 0 , بحيث يكون h ترتيبه 0 و d اخر حرف ترتيبه 10 , وهذه بعض الدوال الخاصه بالكلاس string والتي يمكننا الاستفاده منها في التحكم في النصوص :
1- Trim وتقوم بازالة المسافات الفارغة من بداية ونهاية النص , ويتبعها TrimEnd و TrimStart ووظيفة الاولى حذف المسافات من النهاية , عكس الثانيه التي تحذفها من بداية النص فقط .

2- Contains وهي تقوم بالبحث عن نص معين داخل النص , وتأخذ معامل من نوع string , وتكون نتيجتها اما true في حالة كان النص المدخل موجود داخل النص الأصلي الذي نبحث داخله , وتكون false في حالة اذا لم يكن موجود .

3-  EndWith وهي تبين مدى تطابق نهاية النص مع نص معين يمثله المعامل الذي تمرره من خلال الداله , فمثلا لو استخدمنا EndWith("ld") على جملة hello world فإن الناتج سيكون true لأنه نهاية الجمله تطابق المعامل , عكس دالة StartWith والتي تبين مدى تطابق بداية النص فمثلاً StartWith("ld") تكون نتيجتها false لأنها غير متطابقه مع النص الذي يبدأ ب he .
جدير بالذكر ان كل الدوال السابقه حساسه لحالة الحروف , ف H تختلف عن h عن تطبيق احدى هذه الدوال , فمثلاً StartWith("he") نتيجتها true اما StartWith("He") التي نتيجتها false .

4- Remove وهي تقوم بحذف نص معين , وتتم بطريقتين , اما بتمرير مكان ترتيب حرف معين index الى الداله لتقوم بحذف كل النص بداية من هذا الحرف حتى نهاية النص Remove(2) , او بتمرير رقمين الاول يكون ترتيب الحرف الذي سيبدأ منه الحذف , والثاني سيكون عدد الحروف التي سيتم حذفها Remove(2,3) , وكمثال على ذلك وتطبيقه على جملة hello world
Remove(2) = he .
Remove(2, 3) = he world .

5- Insert وهي تقوم بادخال حرف معين في مكان معين داخل النص بواسطه رقم index , ويمرر لها معاملين , الأول رقم الIndex الذي سيوضع فيه النص والذي يمثله المعامل الثاني للداله , وبتطبيق ذلك على hello world
Insert(2,"kk") = hekkllo world .

6- Replace وهي تقوم باستبدال نص بنص اخر , او حرف بحرف , فيمكنك من خلالها استبدال نص معين داخل النص الأصلي بنص اخر , وكمثال hello world
Replace('l','g') = heggo wogd .
Replace("wo","mn") = hello mnrld .

7- Substring وهي عكس Remove تماماً , فهي تقوم باقتطاع نص معين وفقا لطريقتين ايضا , اما بتمرير رقم index يتم اقتطاع النص ابتداءاً منه حتى نهاية النص , او بتمرير رقمين الأول index لبداية الأقتطاع , والثاني عدد الحروف المقتطعه , وبالتطبيق على hello world
ٍSubstring(2) = llo world .
Substring(2, 3) = llo .
وكما نرى فان الحروف التي حذفت في Remove هي نفسها الحروف الناتجة من استخدام Substring .

8- ToLower وهي تحول النص الى حروف صغرى , عكس ToUpper والتي تحوله الى الحاله الكبرى , كمثال
ToLower = hello world .
ToUpper = HELLO WORLD .

9- ToCharArray وهي تخرج لنا مصفوفه من النوع char بها جميع الحروف المكونه للنص , وكما ذكرنا فان النص في الأساس مكون من سلسلة من الحروف , فهذه الداله تفك هذه السلسله وتحولها الى مصفوفه كل عنصر فيها يمثل حرف من النص الأصلي .

10- Split وتقوم بتقسيم النص الى اجزاء بواسطه مجموعه من الحروف او النصوص , وسيأتي شرحها تفصيلاً .
Split Method
تقوم دالة Split بتقسيم النص الى مجموعه من النصوص , ويتم التقسيم وفق طريقتين , اما بالحروف او بالنصوص , بمعنى
اولاً في حالة التقسيم بالحروف , فاننا نمرر للداله مصفوفه بها الحروف التي نريد التقسيم من خلالها , وستقوم الداله بالبحث عن تلك الحروف بداية من بداية النص , وفي حالة وجدت حرفاً منها فانها تتوقف , وتقتطع ما سبق من نص قبل هذا الحرف وتضعه كعنصر في المصفوفه التي تخرجها الداله , ثم تبدأ بعد ذلك بالنص الذي يلي الحرف التي توقفت عنده وتكرر نفس العمليه - ونرى هنا ان الحرف التي تتوقف عنده الداله لا يأخذ في الحسبان , لذلك سنجد نصاً خالياً من جميع الحروف التي تقسم من خلالها , وكمثال على ذلك في hello world اذا تم التقسيم وفق حرف o فقط فستنتج لنا مصفوفه بها النصوص التاليه :
hell
w  -- شاملة المسافه الفارغة
rld
حيث تم اعتبار حرف o كفاصل لعناصر المصفوفه , ويمكن ايضاُ ان تكون الفواصل اكثر من حرف , فمثلا اذا استخدمنا حرفي o , e ستكون النتيجه
h
ll
w - شاملة المسافه
rld

ثانياً في حالة التقسيم وفق نصوص معينه , فبدلا من اعتبار الفاصل كحرف معين , سيتم اعتبار النص كفاصل , فمثلاً اذا كان الفاصل هو ell فستكون النتيجه
h
o
world -- شاملة المسافه

ويمكن ايضاً ان تكون الفواصل اكثر من نص وليس نص وحيد ... وكمثال تطبيقي على الحالتين السابقتين فسوف نقوم استعراض مثال اشمل على كل حالة في الكود التالي :
WordsArray
 
حيث تقوم هذه الداله باعتبار المسافه الفارغة ' ' مفاصل بين النصوص , وهو ما سينتج عنه منطقيا مصفوفة الكلمات التي تكون النص , حيث ان الكلمات تفصل بينهم مسافات فارغه , حيث في البدايه تم تعريف مصفوفه من النوع char ووضعنا بها فقط المسافه , باعتبار انها الوحيده التي ستتخد كفاصل , ثم تم تمرير تلك المصفوفه الى الدالة Split والتي تنتج في النهاية مصفوفه من النوع string بها نتيجة التقسيم .

وكمثال اخر على عملية التقسيم بالكلمات نعرض الكود التالي :
TextArray
 
وبنفس الطريقة السابقه ولكن مع اختلاف نوع التقسيم , فهنا سنقسم وفقاً لكلمات وليست حروف , لذلك استخدمنا مصفوفه من نوع string وليس char , ووضعنا بها كلمتان word1 , word2 للتوضيح فقط , وتم تمرير معاملين في هذه الحالة للداله Split وهما :
1- string array وهي كصفوفة النصوص للتقسيم من خلالها .
2- StringSplitOptions وهو يحدد ما اذا كانت الدالة ستحذف العناصر الفارغه داخل المصفوفه السابقه ام لا , وتم تحديد القيمة none حتى لا نحذف العناصر الفارغه , وهذا حسب حاجتك اثناء التقسيم .
ثم بعد ذلك تنتج لنا مصفوفه تحتوي على عناصر عباره عن نصوص مقسمة وفقا للكلمات المحدده - وتجدر الأشاره انه تلك الكلمات لن تكون موجوده في المصفوفه نهائياً لأن التقسيم سينتهي قبلها , ويبدأ بعدها  
مثال على تقسيم التاريخ
سنشرح مثالا عملياً أكثر عن هذا الموضوع حيث سنقوم بتقسيم التاريخ موجود لديك كنص , واستخلاص عناصر التاريخ الثلاثه وهما اليوم والشهر والسنه , ونلاحظ ان التاريخ غالبا ما يكون على احدى حالتين , اما 11-10-2011 في مفصول بـ (-) , او  11/10/2011 أي مفصول بـ (/) , وسنفترض في مثالنا ان التاريخ على الهيئة الأولى مفصول بعلامة (-) , حيث سنعرف مصفوفه من نوع char ونضع بها فقط العلامه (-) , ونقوم بتقسيم النص بواسطه الداله Split من خلال تلك المصفوفه , وبعد ذلك نستخلص عناصر التاريخ من المصفوفه الناتجة عن التقسيم , وهذا كود العمليه  
 
 Written by :  Mohammed Mahmoud
الفئة: سي شارب | أضاف: ham_mody2000 (2011-10-11 4:54 AM)
مشاهده: 4346 | الترتيب: 0.0/0


أترك تعليقك من خلال حسابك على الفيس بوك

تعليقات مشتركي الموقع

مجموع المقالات: 0
إضافة تعليق يستطيع فقط المستخدمون المسجلون
[ التسجيل | دخول ]
طريقة الدخول
بحث
Our Facebook community

تم إطلاق صفحة توب كودر على الفيس بوك

Advertisment
الأحـــدث
hitstatus
Copyright Mohammed Mahmoud © 2016
إنشاء موقع مجاني с uCoz