استكمالاً لما سبق...
فحص بداية النص و فحص نهايته
الدوال StartsWith-EndsWith
الدالة StartsWith
تحتاج في الكثير من الاحيان الى فحص نص ما اذا ما كان يبدأ بحرف او بكلمة ما و لهذه المهمة نستخدم الدالة StartsWith وهي تعيد قيمة منطقية اما True في حال وجدتها او False في حال لم تجدها.
و تجدر الاشارة الى ان الدالة حساسة لحالة الاحرف (Case Sensitive)
و يمكنك التغلب على الحساسية الزائدة لهذه الدالة عبر تمرير OrdinalIgnoreCase ضمن الوسائط
بالشكل العام تستخدم وسيطة واحدة فقط و هي اسم النص او الحرف المراد فحصه ضمن الجملة
مثال1:
في هذا المثال فحصنا كلمة كاملة مع مراعاة حالة الاحرف.
مثال2:
هذا المثال فحصنا حرف واحد فقط مع مراعاة حالة الاحرف.
مثال3:
كما و يمكنك الفحص وفق طريقة اخرى فقط على مستوى حرف و هي حساسة للأحرف.
الدالة EndsWith : عكس الدالة السابقة تقوم بفحص نهاية الجملة و تختبر النص المرسل او الحرف , و ايضاً هي حساسة لحالة الاحرف
نفس الامثلة السابقة تنطبق على هذه الدالة و لنأخذ مثال جديد و شائع الاستخدام و مطلوب أيضا بكثرة.
مثال1:
من الامثلة على ذلك فحص روابط الويب , كما تعرف هناك شيئ يميز روابط الويب وهي تنتهي بأحد الدومينات مثل (Com,Net,Org)..وغيرها
من الجيد وجود مثل هذه الدالة لنقوم عن طريقها بالفحص و لتتضح لك الامور اكثر نأخذ هذا المثال
المصفوفة تحتوي على القيم المراد فحصها في الرابط , و القيمة المعادة ستكون .com لانها تحقق الشرط.
نفس الكلام عن حساسية الاحرف يمكنك استخدام OrdinalIgnoreCase كوسيطة ثانية.
مقارنة النصوص الدالة
String.Equals : دالة تستخدم لمقارنة نصين و تعيد قيمة منطقية و يمكن كتابتها بأكثر من شكل , لنجلي الغموض عبر بعض الامثلة.
مثال1:
مثال2:
القيم المعادة في المثال الاول و الثاني هي True و هي تدل على التساوي.
مثال3:
تعطي نفس عمل الدوال السابقة تماماً
مثال4:
هنا استخدمنا الدالة ReferenceEquals لمعرفة اذا كان المتغيران يشيران الى نفس المرجع (نفس المكان في الذاكرة)
مثال5:
و اخيراً باستخدام الدالة Compare.
تنسيقات النص وفق الدالة
String.Format : التعامل مع هذه الدالة معقد بعض الشيئ لوجود الكثير من انواع التنسيقات , بإمكانك وفق هذه الدالة استخراج تنسيقات مختلفة للنصوص و الارقام و التواريخ ايضاً.
لندخل في مثال عملي مع الشرح
مثال1:
لنأتي الى وسائط String.Format و نشرحها بشيئ من التفصيل
الوسيطة الاولى {0}: وهي تعني اول متغير بعد الفاصلة سيحل هنا و في حالتنا سيكون name, اما الرمز : فهو فاصل بين الوسيطة الاولى و الوسيطة الثانية .
الوسيطة الثانية {1:0.0}- وهي مقسومة لقسمين كما ترى الرقم 1 سيحل مكانه المتغير الثاني بعد الفاصلة و هو number اما 0.0 فهي تعني تنسيق الرقم كما تلاحظ هو Decimal أي رقم بفواصل,اما الاشاره - فهي مجرد فاصل بعد التنسيق.
الوسيطة الثالثة {2:dd/MM/yyyy} كذلك مقسومة لقسمين , الرقم 2 يشير الى المتغير الثالث بعد الفاصلة و هو Datee و باقي القسم هو شكل تنسيق التاريخ الذي نريده,بامكانك استخلاص أي تنسيق للتاريخ كما تريد.
الناتج من المثال السابق
Vb For Arab:100.0-12/12/2016
من تنسيقات الارقام المشهورة المعروف % (بالمئة) او Percentage للحصول على مثل هذا التنسيق يجب ان يكون لدينا رقم بالتنسيق Double ومن بعدها يمكننا استخدام التالي
تقسيم النص الى اجزاء مع الدالة
Split: تستخدم هذه الدالة عادة في تقسيم النص الى اجزاء وفق معيار محدد (المسافات بين الكلمات,الفواصل ,...الخ),و من ثم يتم نسخ الاجزاء الى مصفوفة , وبعد ذلك يمكنك استخدام حلقة للمرور على عناصر المصفوفة و جلب البيانات.
مثال1:
استخدمنا المعيار (مسافات فارغة بين الكلمات)
الناتج من المثال السابق
Home
Site
Vb
For
Arab
ومن الامثلة الشهيرة على التقسيم هي مسارات الملفات و المجلدات حيث يمكنك استخدام المعيار(\) لتقسيم نص المسار و الحصول على كل المجلدات التي في رابط المسار
مثال2:
احياناً قد تواجه بعض الادخالات الفارغة في نص ما و استخدام الدالة بشكلها السابق سيؤدي الى جلب الادخالات الفارغة , عندها يتوجب عليك استخدام RemoveEmptyEntries كوسيطة اضافية للتخلص من الادخالات الفارغة.
تحويل النص الى مصفوفة محارف مع الدالة
ToCharArray : ببساطة هذه الدالة تقوم بتحويل النص الى مصفوفة من المحارف عدد عناصرها يساوي طول النص ,او عدد محارف النص.
مثال1:
تحويل حالة احرف النص الى النمط حروف صغيرةمع الدالة.
TowLower :تستخدم لتحويل حالة الاحرف في نص ما الى احرف صغيرة , و استخدامها بسيط جداً.
مثال1:
تحويل حالة الاحرف الى حالة الاحرف الكبيرة مع الدالة
ToUpper : عكس الدالة السابقة و تستخدم بنفس الطريقة ايضاً.
مثال1:
ازالة الفراغات من النصوص عبر الدوال
Trim-TrimStart-TrimEnd- تستخدم هذه الدوال لازالة المسافات الفارغة في أي نص
فالدالة Trim تقوم بازالة الفراغات من اول النص و من اخره و باستخدامها انت تستغني عن الدالتين الباقيتين.
بينما تقوم الدالتان TrimStart-TrimEnd
بإزالة الفراغات من اول النص و من اخره كل واحدة كما هو واضح حسب اسمها.
و افضل استخداماتها لضبط ادخالات المستخدم.
فعندما يكون لديك برنامج يعتمد على تلقي الادخالات من المستخدم فيجب ان تحسب حساب ان يكون المستخدم من هواة الضغط على مفتاح Space (عنده فوبيا الفراغات..)
عندها ستصبح بياناتك بلا معنى..؟
مثال1 Trim:
احياناً يكون النص يحتوي في نهايته على رموز مثل(..,؟,!) او غير ذلك.
و انت لا تريد لهذه الرموز ان تخزن او تريد التخلص منها.
الحل موجود مع الوسائط الاضافية للدالة TrimEnd.
مثال2 TrimEnd:
كما تلاحظ وسائط يمكن تمريرها للدالة TrimEnd مهمتها ازالة هذه الرموز من اخر النص (مسافات فارغة – نقط-استفهام...الخ)
لم ينتهي الحديث هنا, مازال لدي ما اخبرك به في بعض الاحيان تود ان تزيل من بداية النص رموز ايضاً او حتى محارف (احرف) بالإضافة للمسافات الفارغة كذلك.
سأعمل هنا بطريقة مختلفة حيث سيكون لدي مصفوفة تحتوي على الرموز و الحروف المراد ازالتها و من ثم سأمرر مصفوفة الرموز الى الدالة TrimStart.
مثال3 TrimStart:
تم ازالة كل الرموز التي في النص اعتماداً على معطيات المصفوفة.
اذا اردت ازالة احرف انتبه لحساسية الاحرف حالة TrimEnd حساسة لحالة الاحرف.
يتبع..........
فحص بداية النص و فحص نهايته
الدوال StartsWith-EndsWith
الدالة StartsWith
تحتاج في الكثير من الاحيان الى فحص نص ما اذا ما كان يبدأ بحرف او بكلمة ما و لهذه المهمة نستخدم الدالة StartsWith وهي تعيد قيمة منطقية اما True في حال وجدتها او False في حال لم تجدها.
و تجدر الاشارة الى ان الدالة حساسة لحالة الاحرف (Case Sensitive)
و يمكنك التغلب على الحساسية الزائدة لهذه الدالة عبر تمرير OrdinalIgnoreCase ضمن الوسائط
بالشكل العام تستخدم وسيطة واحدة فقط و هي اسم النص او الحرف المراد فحصه ضمن الجملة
مثال1:
PHP كود :
Dim Selecting As String = "Select Some Fileds"
If Selecting.StartsWith("Select") Then
MsgBox("Found...")
End If
في هذا المثال فحصنا كلمة كاملة مع مراعاة حالة الاحرف.
مثال2:
PHP كود :
Dim Selecting As String = "Select Some Fileds"
If Selecting.StartsWith("S") Then
MsgBox("Found...")
End If
هذا المثال فحصنا حرف واحد فقط مع مراعاة حالة الاحرف.
مثال3:
PHP كود :
Dim Selecting As String = "Select Some Fileds"
If Selecting.StartsWith("select", StringComparison.OrdinalIgnoreCase) Then
MsgBox("Found...")
End If
في هذا المثال فحصنا كلمة مع عدم مراعاة حالة الاحرف (من دون حساسية)
مثال4:كما و يمكنك الفحص وفق طريقة اخرى فقط على مستوى حرف و هي حساسة للأحرف.
PHP كود :
Dim Selecting As String = "Select Some Fileds"
If Selecting.Length >= 1 And Selecting(0) = "S" Then
MsgBox("Found...")
End If
الدالة EndsWith : عكس الدالة السابقة تقوم بفحص نهاية الجملة و تختبر النص المرسل او الحرف , و ايضاً هي حساسة لحالة الاحرف
نفس الامثلة السابقة تنطبق على هذه الدالة و لنأخذ مثال جديد و شائع الاستخدام و مطلوب أيضا بكثرة.
مثال1:
من الامثلة على ذلك فحص روابط الويب , كما تعرف هناك شيئ يميز روابط الويب وهي تنتهي بأحد الدومينات مثل (Com,Net,Org)..وغيرها
من الجيد وجود مثل هذه الدالة لنقوم عن طريقها بالفحص و لتتضح لك الامور اكثر نأخذ هذا المثال
PHP كود :
Dim Link As String = "http://vb4arb.com"
Dim array() As String = {".net", ".org", ".com"}
For Each elem As String In array
If Link.EndsWith(elem) Then
MsgBox(elem)
End If
Next
المصفوفة تحتوي على القيم المراد فحصها في الرابط , و القيمة المعادة ستكون .com لانها تحقق الشرط.
نفس الكلام عن حساسية الاحرف يمكنك استخدام OrdinalIgnoreCase كوسيطة ثانية.
مقارنة النصوص الدالة
String.Equals : دالة تستخدم لمقارنة نصين و تعيد قيمة منطقية و يمكن كتابتها بأكثر من شكل , لنجلي الغموض عبر بعض الامثلة.
مثال1:
PHP كود :
Dim B1 As String = "AboLayla"
Dim B2 As String = "AboLayla"
MsgBox(B1.Equals(B2))
PHP كود :
Dim B1 As String = "AboLayla"
Dim B2 As String = "AboLayla"
MsgBox(String.Equals(B1, B2))
القيم المعادة في المثال الاول و الثاني هي True و هي تدل على التساوي.
مثال3:
PHP كود :
Dim B1 As String = "AboLayla"
Dim B2 As String = "AboLayla"
If B1 = B2 Then
MsgBox("Equals...")
End If
تعطي نفس عمل الدوال السابقة تماماً
مثال4:
PHP كود :
Dim B1 As String = "AboLayla"
Dim B2 As String = "AboLayla"
If String.ReferenceEquals(B1, B2) Then
MsgBox("Same Reference...")
Else
MsgBox("Not Same Reference...")
End If
هنا استخدمنا الدالة ReferenceEquals لمعرفة اذا كان المتغيران يشيران الى نفس المرجع (نفس المكان في الذاكرة)
مثال5:
PHP كود :
Dim B1 As String = "AboLayla"
Dim B2 As String = "AboLayla"
If String.Compare(B1, B2) = 0 Then
MsgBox("Compare Equals...")
End If
تنسيقات النص وفق الدالة
String.Format : التعامل مع هذه الدالة معقد بعض الشيئ لوجود الكثير من انواع التنسيقات , بإمكانك وفق هذه الدالة استخراج تنسيقات مختلفة للنصوص و الارقام و التواريخ ايضاً.
لندخل في مثال عملي مع الشرح
مثال1:
PHP كود :
Dim name As String = "Vb For Arab"
Dim number As Integer = 100
Dim Datee As DateTime = DateTime.Now
Dim result As String =
String.Format("{0}: {1:0.0} - {2:dd/MM/yyyy}", name, number, Datee)
MsgBox(result)
لنأتي الى وسائط String.Format و نشرحها بشيئ من التفصيل
الوسيطة الاولى {0}: وهي تعني اول متغير بعد الفاصلة سيحل هنا و في حالتنا سيكون name, اما الرمز : فهو فاصل بين الوسيطة الاولى و الوسيطة الثانية .
الوسيطة الثانية {1:0.0}- وهي مقسومة لقسمين كما ترى الرقم 1 سيحل مكانه المتغير الثاني بعد الفاصلة و هو number اما 0.0 فهي تعني تنسيق الرقم كما تلاحظ هو Decimal أي رقم بفواصل,اما الاشاره - فهي مجرد فاصل بعد التنسيق.
الوسيطة الثالثة {2:dd/MM/yyyy} كذلك مقسومة لقسمين , الرقم 2 يشير الى المتغير الثالث بعد الفاصلة و هو Datee و باقي القسم هو شكل تنسيق التاريخ الذي نريده,بامكانك استخلاص أي تنسيق للتاريخ كما تريد.
الناتج من المثال السابق
Vb For Arab:100.0-12/12/2016
من تنسيقات الارقام المشهورة المعروف % (بالمئة) او Percentage للحصول على مثل هذا التنسيق يجب ان يكون لدينا رقم بالتنسيق Double ومن بعدها يمكننا استخدام التالي
PHP كود :
Dim Perc As Double = 0.96
Dim result As String =
String.Format("{0:0.0%}", Perc)
MsgBox(result)
تقسيم النص الى اجزاء مع الدالة
Split: تستخدم هذه الدالة عادة في تقسيم النص الى اجزاء وفق معيار محدد (المسافات بين الكلمات,الفواصل ,...الخ),و من ثم يتم نسخ الاجزاء الى مصفوفة , وبعد ذلك يمكنك استخدام حلقة للمرور على عناصر المصفوفة و جلب البيانات.
مثال1:
PHP كود :
Dim Name As String = "Home Site Vb For Arab"
Dim words As String() = Name.Split(New Char() {" "c})
Dim word As String
For Each word In words
MsgBox(word.ToString)
Next
استخدمنا المعيار (مسافات فارغة بين الكلمات)
الناتج من المثال السابق
Home
Site
Vb
For
Arab
ومن الامثلة الشهيرة على التقسيم هي مسارات الملفات و المجلدات حيث يمكنك استخدام المعيار(\) لتقسيم نص المسار و الحصول على كل المجلدات التي في رابط المسار
مثال2:
احياناً قد تواجه بعض الادخالات الفارغة في نص ما و استخدام الدالة بشكلها السابق سيؤدي الى جلب الادخالات الفارغة , عندها يتوجب عليك استخدام RemoveEmptyEntries كوسيطة اضافية للتخلص من الادخالات الفارغة.
PHP كود :
Dim Names As String = "nabil,Ahmad,,,Sami"
Dim elements() As String =
Names.Split(New Char() {","c}, StringSplitOptions.RemoveEmptyEntries)
For Each element As String In elements
MsgBox(element)
Next
تحويل النص الى مصفوفة محارف مع الدالة
ToCharArray : ببساطة هذه الدالة تقوم بتحويل النص الى مصفوفة من المحارف عدد عناصرها يساوي طول النص ,او عدد محارف النص.
مثال1:
PHP كود :
Dim name As String = "Nabil Ahmad Soleman"
Dim array() As Char = name.ToCharArray
For Each element As Char In array
MsgBox(element)
Next
تحويل حالة احرف النص الى النمط حروف صغيرةمع الدالة.
TowLower :تستخدم لتحويل حالة الاحرف في نص ما الى احرف صغيرة , و استخدامها بسيط جداً.
مثال1:
PHP كود :
Dim Myname As String = "Nabil Ahmad Soleman"
Dim array() As Char = Myname.ToLower()
For Each element As Char In array
MsgBox(element)
Next
تحويل حالة الاحرف الى حالة الاحرف الكبيرة مع الدالة
ToUpper : عكس الدالة السابقة و تستخدم بنفس الطريقة ايضاً.
مثال1:
PHP كود :
Dim Myname As String = "Nabil Ahmad Soleman"
Dim array() As Char = Myname.ToUpper
For Each element As Char In array
MsgBox(element)
Next
ازالة الفراغات من النصوص عبر الدوال
Trim-TrimStart-TrimEnd- تستخدم هذه الدوال لازالة المسافات الفارغة في أي نص
فالدالة Trim تقوم بازالة الفراغات من اول النص و من اخره و باستخدامها انت تستغني عن الدالتين الباقيتين.
بينما تقوم الدالتان TrimStart-TrimEnd
بإزالة الفراغات من اول النص و من اخره كل واحدة كما هو واضح حسب اسمها.
و افضل استخداماتها لضبط ادخالات المستخدم.
فعندما يكون لديك برنامج يعتمد على تلقي الادخالات من المستخدم فيجب ان تحسب حساب ان يكون المستخدم من هواة الضغط على مفتاح Space (عنده فوبيا الفراغات..)
عندها ستصبح بياناتك بلا معنى..؟
مثال1 Trim:
PHP كود :
Dim value As String = " This is an example string. "
value = value.Trim()
احياناً يكون النص يحتوي في نهايته على رموز مثل(..,؟,!) او غير ذلك.
و انت لا تريد لهذه الرموز ان تخزن او تريد التخلص منها.
الحل موجود مع الوسائط الاضافية للدالة TrimEnd.
مثال2 TrimEnd:
PHP كود :
Dim Myarray(1) As String
Myarray(0) = "What's Your Name?"
Myarray(1) = "My name's pla pla... "
For Each element As String In Myarray
Dim TrmEnd As String = element.TrimEnd("?", ".", " ")
MsgBox(TrmEnd)
Next
كما تلاحظ وسائط يمكن تمريرها للدالة TrimEnd مهمتها ازالة هذه الرموز من اخر النص (مسافات فارغة – نقط-استفهام...الخ)
لم ينتهي الحديث هنا, مازال لدي ما اخبرك به في بعض الاحيان تود ان تزيل من بداية النص رموز ايضاً او حتى محارف (احرف) بالإضافة للمسافات الفارغة كذلك.
سأعمل هنا بطريقة مختلفة حيث سيكون لدي مصفوفة تحتوي على الرموز و الحروف المراد ازالتها و من ثم سأمرر مصفوفة الرموز الى الدالة TrimStart.
مثال3 TrimStart:
PHP كود :
Dim text As String = ".?. Hello Every One"
Dim array(2) As Char
array(0) = "."
array(1) = " "
array(2) = "?"
text = text.TrimStart(array)
MsgBox(text)
تم ازالة كل الرموز التي في النص اعتماداً على معطيات المصفوفة.
اذا اردت ازالة احرف انتبه لحساسية الاحرف حالة TrimEnd حساسة لحالة الاحرف.
يتبع..........
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال


