تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[مقال] دوال التعامل مع النصوص Strings - VB.NET
#5
 استكمالاً لما سبق...


فحص بداية النص و فحص نهايته

الدوال 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.OrdinalIgnoreCaseThen
    MsgBox
("Found...")
End If 

في هذا المثال فحصنا كلمة مع عدم مراعاة حالة الاحرف (من دون حساسية)
مثال4:
كما و يمكنك الفحص وفق طريقة اخرى فقط على مستوى حرف و هي حساسة للأحرف.
PHP كود :
Dim Selecting As String "Select Some Fileds"
If Selecting.Length >= 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(elemThen
         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)) 
مثال2:
PHP كود :
Dim B1 As String "AboLayla"
Dim B2 As String "AboLayla"
MsgBox(String.Equals(B1B2)) 

القيم المعادة في المثال الاول و الثاني هي 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(B1B2Then
    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(B1B2) = 0 Then
     MsgBox
("Compare Equals...")
End If 
و اخيراً باستخدام الدالة Compare.



 

تنسيقات النص وفق الدالة
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}"namenumberDatee)
 
 
       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 حساسة لحالة الاحرف.

يتبع..........
 
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}


الردود في هذا الموضوع
RE: دوال التعامل مع النصوص Strings - VB.NET - بواسطة ابو ليلى - 12-12-16, 04:39 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  نظرة على DropBox SDK و التعامل معها +برنامج رفع و تحميل ملفات ابو ليلى 5 5,969 16-08-24, 04:39 PM
آخر رد: ackore
  تحويل Interface الي دوال API silverlight 1 3,648 24-11-21, 04:15 PM
آخر رد: yassoo1985
  التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI - مقدمة RaggiTech 3 6,341 30-07-21, 05:14 PM
آخر رد: kebboud
Lightbulb [مقال] التعامل مع ملفات اوفيس من خلال مكتبة NPOI ابو ليلى 2 4,616 01-07-21, 11:42 AM
آخر رد: kebboud
Lightbulb [مقال] التعامل مع اختصارات الملفات Shortcuts Magic Sword 2 4,707 01-10-20, 11:36 AM
آخر رد: abomo3ath
  ترجمة النصوص من الإنجليزية الي العربية بين الواقع و الخيال silverlight 2 5,771 28-05-20, 05:05 AM
آخر رد: محمد ايمن
Exclamation [VB.NET] التعامل مع ال CMD عن طريق ال TextBox YousefOkasha 5 5,492 02-06-18, 09:34 PM
آخر رد: YousefOkasha
  التعامل مع الملفات الصوتية ........دردشة برمجية RaggiTech 8 10,965 28-11-17, 11:23 PM
آخر رد: ahmed4240
  الجمع بين النصوص vb.net Basil Abdallah 0 2,444 14-01-17, 01:40 PM
آخر رد: Basil Abdallah
  التعامل مع جهاز الكمبيوتر من Command Prompt silverlight 7 4,648 22-12-16, 06:07 PM
آخر رد: silverlight

التنقل السريع :


يقوم بقرائة الموضوع: