هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.



 
الرئيسيةأحدث الصورالتسجيلدخولالتسجيل

 

 معالجة النصوص في فيجوال بيسك

اذهب الى الأسفل 
كاتب الموضوعرسالة
eslamkhairy
المدير العام
المدير العام
eslamkhairy


عدد الرسائل : 187
تاريخ التسجيل : 21/10/2007

معالجة النصوص في فيجوال بيسك Empty
مُساهمةموضوع: معالجة النصوص في فيجوال بيسك   معالجة النصوص في فيجوال بيسك Emptyالأربعاء نوفمبر 28, 2007 11:17 pm

المقدمة


مع ظهور انترنت أضحت الحاجة إلى معالجة النصوص ملحة وواضحة، سواءا في ملفات HTML أو بروتوكولات الإنترنت المختلفة أو برامج المحادثة وغيرها.

وتتيح اللغات المختلفة طرقا مختلفة إلا أنها غالبا ما تكون قادرة على أداء كل ما يخطر ببالك من عمليات معالجة.


في البداية يجب أن نتعرف قليلا عن السلاسل النصية في فيجوال بيسيك، تتكون السلسلة النصية في فيجوال بيسيك من سلسلة مرقمة متتالية من الأحرف، بحيث يأخذ الحرف الأول فيها الرقم 1.


ولتخزين السلاسل النصية والتعامل معها في فيجوال بيسيك يوجد نوع بيانات خاص لذلك هو النوع string، فيمكنك مثلا أن تعرف دالة لتحتوي على سلسلة نصية كالتالي :Dim myText As String

لكي نقوم بوصل ( لحم ) أكثر من سلسلة نصية بعضها ببعض فإننا نستخدم المعامل & أو المعامل + ، ويتم إحاطة النصوص في فيجوال بيسيك بأقواس اقتباس مزدوجة ( " )، بالنسبة للثوابت يوجد ثابت واحد مهم هو vbCrLf، وهو عبارة عن ثابت السطر الجديد، إذا أردت الآن أن تضع العبارة التالية في متغيرة : Hi,
I'm mubarmej


ستحتاج إلى كتابة الشفرة التالية لعمل ذلك : myText = "Hi, " & vbCrLf & "I'm mubarmej"

لأساسيات


الدالة chr


[size=12]chr(code)


تقوم الدالة chr بأخذ قيمة بين 0 و 255 وتعيد الحرف الممثل لهذه القيمة في جدول رموز ASCII، على سبيل المثال العبارة التالية : Hi,
I'm "mubarmej"


ستجد أنك لا تستطيع كتابتها بهذا الشكل : myText = "Hi," & vbCrLf & "I'm "mubarmej""

لأن البرنامج سيعتقد بأن نهاية السلسة النصية السابقة هي عند علامات الاقتباس التي تقع مباشرة قبل كلمة mubarmej وستظهر لك رسالة خطأ، لذلك فإننا نلجأ لاستخدام الدالة chr حيث أن رمز علامة الاقتباس المزدوجة في جدول ASCII هو 34، فتكون الصياغة الصحيحة للعبارة البرمجية السابقة كالتالي : myText = "Hi," & vbCrLf & "I'm " & chr(34) & "mubarmej" & chr(34)
الدالة Len



Len(string)


ستجد فيما بعد حاجة في كثير من الأحيان لمعرفة طول السلسلة النصية ( عدد الأحرف )، ولعمل ذلك استخدم الدالة Len، مرر إليها النص وستعيد لك عدد الحروف. myLength = Len("mubarmej")
الدالة InStr


InStr([start ,]string1, string2[, compare])


يمكنك بواسطة هذه الدالة معرفة أول مكان يظهر فيه نص ما ضمن نص آخر أكبر منه.

الوسيطة الأولى هي وسيطة اختيارية تحدد مكان بدء البحث، أما الوسيطة الثانية string1 فتحدد السلسلة النصية التي سيتم البحث فيها، والوسيطة الثالثة string2 تحدد السلسلة النصية التي سيتم البحث عنها في السلسلة الأولى، أما الوسيطة الأخيرة فهي اختيارية أيضا وتحدد نوع المقارنة التي يجب إجرائها وهي تأخذ أحد الثوابت التالية :


    <LI style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; FONT-SIZE: x-small; PADDING-BOTTOM: 1px; MARGIN: 1px; DIRECTION: rtl; PADDING-TOP: 1px; FONT-FAMILY: Tahoma; TEXT-ALIGN: justify">

    0 - vbBinaryCompare


  • 1 - vbTextCompare



والفرق بينهما هو أن الأولى تراعي حالة الأحرف والثاني لا تراعي حالة الأحرف.

في المثال التالي الدالة i ستحتوي على القيمة 1 : i = InStr("mubarmej","m")

وأما المثال التالي فستحتوي i فيه على القيمة 6 : i = InStr(2,"mubarmej","m")

حيث أن الدالة في المثال السابق ستبحث عن الحرف m بادءة من الحرف الثاني ولذلك فهي لن تجد الحرف الأول.
الدالة str


Str(number)


قد تبدو الدالة str متشابهة مع الدالة chr، إلا أنها تؤدي وظيفة مختلف تماما، فهي تحول الأرقام إلى سلاسل نصية، وهي تفيد مثلا في حال أردت أن تقوم بالتحام بين رقمين فتقوم بتحويل كل منهما إلى سلسلة نصية وتطبق بينهما جمع السلاسل ( & ) الذي يختلف عن جمع الأرقام وبالتالي تحصل على سلسلة جديدة يمكنك أن تحولها إلى رقم من جديد، على سبيل المثال الدالة myNumber تحتوي على القيمة 123456. myNumber = Str(123) & Str(456)
ستواجهك مشكلة في الشفرة السابقة حيث يقوم فيجوال بيسيك بإضافة مسافة قبل كل سلسلة نصية تنتج من الدالة السابقة، ستعرف فيما بعد كيف تعالج هذه المشكلة

الإقتطاع




يمكنك أن تأخذ أجزاءا محددة من سلسلة نصية بعدة طرق مختلفة، يمكنك مثلا أن تحصل على الأحرف الثلاثة الأولى من بداية السلسلة النصية أو الأربعة الأخيرة أو خمسة أحرف بدءا من الحرف السادس وهكذا .

الدالة Left




Left(string, length)



حيث تقوم بوضع سلسلة نصية string وتحدد الجزء الذي تريد اقتطاعه من بداية السلسلة length، والتعبير بكلمة من بداية السلسلة أدق من يسار السلسلة لأن هذا قد يحدث اشتباها في السلاسل النصية للغات التي تكتب من اليمين إلى اليسار مثل العربية، هنا تعيد السلسلة العدد المحدد من الحروف من اليمين أي أنها لا تهتم لاتجاه ظهور أحرف السلسة وإنما اتجاه تخزينها، وللتخلص من هذه المشكلة سنقول بداية السلسلة .

الدالة Right



مطابقة للدالة Left في كل شيء، إلا أنها تأخذ العدد المحدد من الحروف من نهاية السلسلة.

الدالة Mid


Mid (string, start[ ,length])


تعيد الدالة Mid عددا من الأحرف قدره length بدءا من حرف معين هو start، في سلسلة نصية string لاحظ أيضا أن الوسيطة length اختيارية وإذا لم تمرر بها أي قيمة فإن الدالة ستعيد الأحرف إلى نهاية السلسلة .

في المثال التالي ستحتوي المتغيرة myText على العبارة 'm m : myText = Mid("I'm mubarmej", 2, 4)

أما في المثال التالي فستحتوي على الكلمة mubarmej : myText = Mid("I'm mubarmej", 5)



التصريح Mid



يقوم التصريح Mid باستبدال مقطع محدد من النص بنص آخر، وهو يكتب في صورة مشابهة جدا لطريقة كتابة دالة Mid ولكن توضع بعده علامة مساواة وبعدها العبارة الجديدة، في المثال التالي ستحتوي المتغيرة myText على القيمة I'm mubarmej : name = "mubarmej"
myText = "I'm name"
Mid(myText, 5) = name


حيث سيتم حذف الجزء المحدد بالخاصية Mid ويوضع الجزء الذي بعد علامة المساواة في مكان الجزء المحذوف .

ملاحظة



يعتبر التصريح Mid عملية تحوير أكثر منها اقتطاعا.



التحوير

يمكنك عمل الكثير من التغييرات والتحويرات في السلاسل النصية، الأمر يشبه تطبيق الفلاتر على هذه النصوص وتوجد العديد من هذه الفلاتر مدمجة في الإصدارة السادسة من فيجوال بيسيك، وفيما يلي أهمها :
الدالة LCase



LCase(string)


تعيد الدالة LCase نسخة من النص string تكون فيه جميع الحروف صغيرة Lowercase المتغيرة myText في المثال التالي ستحتوي على عبارة it works : myText = "It Works"
myText = LCase(myText)

الدالة UCase

LCase(string)


نفس الدالة السابقة لكنها تقوم بتحويل الأحرف إلى كبيرة Uppercase.
الدالة strReverse


strReverse(string)


تعيد السلسلة string معكوسة، أي تبدأ من البداية وتنتهي من النهاية، المتغيرة myText في المثال التالي ستحتوي على العبارة emoclew : myText = strReverse("welcome")
الدالة Replace



Replace(string1, string2, string3, start, count[, compare])


وتقوم باستبدال النص string2 بالنص string3 ضمن السلسلة string1، أي أنها تبحث في النص string1 عن النص string2 وعندما تجده فإنها تحذفه منه وتضع مكانه string3، ويمكن تحديد نقطة بداية البحث بالوسيطة start، وعدد مرات الاستبدال القصوى بالوسيطة count، ضع القيمة -1 لاستبدال الكل، وطريقة المقارنة بالوسيطة compare كما ذكر سابقا.

المتغيرة myText في المثال التالي ستحتوي على القيمة Hi Everyone : myText = Replace("Welcome Everyone,", "Welcome", "Hi", 1, -1)

الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
معالجة النصوص في فيجوال بيسك
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
 :: قسم لغات البرمجة :: قسم لغات البرمجة-
انتقل الى: