تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[مقال] دوال التعامل مع النصوص Strings - VB.NET
#1
التعامل مع النصوص في Strings - VB.NET
طرق التعامل مع النصوص من دمج و حذف و عمليات اخرى...؟
 

ادخال نص في المكان المحدد
Insert a string in a specific position
تحتاج في بعض الاحيان الى ادخال نص في مكان محدد في نص موجود , نستخدم الدالة Insert   و هي تاخذ  وسيطتين
الوسيطة الاولى: موقع بداية الادخال و هي رقمية تبدأ من الرقم 0
الوسيطة الثانية: و هي النص المراد ادخاله
المثال التالي يوضح:
PHP كود :
       Dim FirstName As String "Ali"
 
       Dim LastName As String "Mohmad"
 
       Dim FullName As String FirstName "  " LastName
        Dim MiddleName 
As String "Morad"
 
       FullName FullName.Insert(4MiddleName)
 
       MsgBox(FullName
 



دمج النصوص مع بعضها
Combining strings
لدمج اكثر من نص مع بعضهم نستخدم المعامل &    
مثال1:
PHP كود :
Dim FirstName As String "Ali"
Dim LastName As String "Mohmad"
Dim MiddleName As String "Morad"
Dim FullName As String
FullName 
"My name is : " FirstName MiddleName LastName 

مثال2:
PHP كود :
       Dim FirstName As String "Ali"
 
       Dim LastName As String "Mohmad"
 
       Dim MiddleName As String "Morad"
 
       Dim FullName String.Concat(FirstName" "MiddleName" "LastName)
 
       MsgBox(FullName
هنا استخدمنا الدالة Concat  لعملية تجميع النصوص

مثال3:
PHP كود :
Dim FirstName As String "Ali"
Dim LastName As String "Mohmad"
Dim MiddleName As String "Morad"
Dim FullName String.Join(" "FirstNameMiddleNameLastName)
MsgBox(FullName

استخدمنا الدالة Join  لدمج النصوص , الوسيطة الاولى تستخدم للفصل بين النصوص المراد دمجها .

 
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
اخذ كلمة او نص من النص المحدد بدءً من الموقع المحدد و بالطول المحدد

Retrieve a String

الموقع دائماً يبدأ من الموقع 0
مثال1:
PHP كود :
Dim txt As String "Hello Every One .. ?"
 
txt txt.Substring(65)
 
MsgBox(txt
النتيجة من المثال عرض الكلمة Every
مثال2:
PHP كود :
Dim Name As String "Sammer Brkat...?"
Name Name.Substring(7)
MsgBox(Name

في المثال الثاني نحن استخدمنا وسيطة واحدة للدالة Substring يتم حذف كل المحارف من الموقع 0  الى العدد المحدد في الوسيطة ويبقي على باقي الجملة

مثال3:
PHP كود :
Dim Name As String "Ali Hani Brkat"
Name Mid(Name54)
MsgBox(Name

المثال الثالث باستخدام الدالة Mid  تعمل نفس الدالة Substring  غير انها تأخذ وسيطة اضافية هي عبارة عن النص المراد معالجته.

مثال4:

احياناً قد تحتاج الى اخذ كلمة او جملة من (وسط نص او بعد حرف ما او قبل حرف ما) و انت لا تريد الدخول في معمعة موقع الجملة ضمن النص المعطى , لذا من المفيد ان يكون لديك دوال جاهزة تفيدك في تنفيذ طلبك بكل سهولة.
يمكنني الاستفادة من كثير من الامور و الدوال الجاهزة للحصول على موقع حرف محدد مثل الدالة (IndexOf) التي تعيد موقع الحرف المحدد , كما و يمكنني الاستفادة من الدالة (LastOfIndex) و التي تعيد لي عدد الحروف اعتباراً من الموقع المحدد للحرف المرسل الى اخر النص.
هكذا اكون قد حددت بداية الموقع و من ثم عبر عملية طرح بسيطة اكون قد حددت طول النص المراد جلبه و بالتالي اصبحت قادراً على جلب أي جملة ضمن نص ما .
و ليكون الامر سهل علينا احببت ان اصنع دالة لها تقوم بأخذ 3 وسائط
1-النص المراد البحث فيه.
2-الحرف المراد البحث عنه (موقع البداية).
3-الحرف الذي نريد الحذف بعده(موقع النهاية)
تابع الدالة التالية:
PHP كود :
Function Between(value As StringAs StringAs String) As String
 
        Dim posA 
As Integer value.IndexOf(a)
 
       Dim posB As Integer value.LastIndexOf(b)
 
       If posA = -1 Then
            Return 
""
 
       End If
 
 
       If posB = -1 Then
            Return 
""
 
       End If
 
 
       Dim txt As Integer posA a.Length
        If txt 
>= posB Then
            Return 
""
 
       End If
 
 
 
       Return value.Substring(txtposB txt)
 
   End Function 
 و الاستدعاء كما يلي:
PHP كود :
Dim Name As String "Ali Hani Brkat"
MsgBox(Between(Name"i""B")) 

النتيجة المعادة بعد التنفيذ Hani
بنفس الطريقة السابقة يمكننا جلب كل الكلام بعد موقع محدد عبر ارسال محرف معين وفق الدالة التالية:
PHP كود :
Function After(value As StringAs String) As String
 
        Dim posA 
As Integer value.LastIndexOf(a)
 
       If posA = -1 Then
            Return 
""
 
       End If
 
       Dim txt As Integer posA a.Length
        If txt 
>= value.Length Then
            Return 
""
 
       End If
 
       Return value.Substring(txt)
 
   End Function
و كذلك قبل محرف معين وفق الدالة التالية
  Function Before
(value As StringAs String) As String
        Dim posA 
As Integer value.IndexOf(a)
 
       If posA = -1 Then
            Return 
""
 
       End If
 
       Return value.Substring(0posA)
 
  End Function 
 






حذف كلمة او حرف من نص محدد اعتباراً من الموقع المحدد و بالطول المحدد.
Remove a string

مثال1:
PHP كود :
Dim txt As String "Hello Every One .. ?"
txt txt.Remove(65)
MsgBox(txt





في هذا المثال تم حذف الكلمة Every



مثال2


PHP كود :
Dim FirstName As String "Ali"
Dim LastName As String "Mohmad"
Dim MiddleName As String "Morad"
Dim FullName As String
FullName 
"My name is : " FirstName MiddleName LastName 
FullName 
FullName.Remove(6MiddleName.Lengt)
MsgBox(FullName
في هذا المثال تم حذف الكلمة Every  اعتماداً على الدالة  Length التي تعيد طول الكلمة في المتغير MiddleName .
مثال3:
PHP كود :
Dim Name As String "My Name Is : Ali Hani Brkat"
Dim index As Integer Name.LastIndexOf("Hani")
Name Name.Remove(index)
MsgBox(Name
في هذا المثال استخدمنا وسيطة واحد في عملية الحذف و هي Index
المثال يستخدم الدالة  LastIndexOf للحصول على عدد المحارف بعد كلمة Hani  , نستخدم الدالة Remove  لحذف الكلمة و ما يأتي بعدها من النص

 



تكرار محرف او كلمة عدد من المرات
Repeat a character or a string

مثال1:
PHP كود :
Dim txt As String String.Join(""Enumerable.Repeat("xr"4))
MsgBox(txt)
مثال2:
Dim txt As String String.Join(""Enumerable.Repeat("B"2))
MsgBox(txt)
مثال3:
Dim txt As String String.Concat(Enumerable.Repeat("ab"3))
MsgBox(txt)
مثال4:
Dim txt As New String("*"c5)
MsgBox(txt




استبدال نص موجود بنص اخر الدالة  Replace

باستخدام الدالة Replace  الامر سهل جداً
الدالة تأخذ وسيطتين الاولى النص المراد استبداله , و الثانية النص الذي نريد وضعه مكان النص السابق.
مثال1:
PHP كود :
Dim Name As String "Ali Hani Brkat"
Name Name.Replace("Hani""Mohmmad")
MsgBox(Name

هنا استبدلنا Hani  بــ Mohmmad
تستخدم الفئة   StrinBuilder نفس الدوال السابقة .
عليك باستيراد فضاء الاسماء System.Text

مثال2:
PHP كود :
Dim Name As New StringBuilder("Ali Hani Brkat")
Name.Replace("Hani""Moneer")
MsgBox(Name.ToString

كما و يمكنك استخدام المكتبة Regular Expressions
و هي افضل من ناحية التعامل مع استبدال النصوص , يمكنك اجراء عمليات اكثر تعقيدا بكود اقل و ابسط.





البحث عن نص في مصدر نصي الدالة Contains
نستخدم الدالة Contains  لفحص تواجد نص ما ضمن نص مصدري
و هي تعيد قيمة منطقية (True , False) فاذا وجد النص اعاد True و الا سيعيد False
مع مراعاة ان العملية حساسة لحالة الاحرف (Case Sensitive)
مثال1:
PHP كود :
Dim Name As String "Ali Hani Brkat"
MsgBox(Name.Contains("ali")) 

القيمة المعادة False  لأنها حساسة لحالة الاحرف (Ali  لا تساوي ali)
القيمة المعادة يمكنك تخزينها في أي مكان في الذاكرة و هكذا لن تعيد استدعاء الدالة لأكثر من مرة.




نسخ النصوص الدوال Copy , CopyTo

نحن لا نستخدم هذه الدوال في العادة لاننا نستفيد من النصوص المعادة من قبل الدوال و طرق اخرى غيرها, على أي حال.
الدالة Copy :نستخدمها لنسخ النص المعطى و نذكرك بانها Shared Method , أي نستخدمها من الكلاس String  مباشرة .
مثال1:
PHP كود :
Dim Name As String "Mohmmad Mansoor"
Dim NameCopied As String String.Copy(Name)
 
If 
Not ReferenceEquals(NameNameCopiedThen
       MsgBox
("القيم غير متطابقة")
End If 

لاحظ استخدمنا الدالة ReferenceEquals  لمعرفة اذا ما كان النصين يشيران الى نفس المرجع ام لا .
القيمة المعادة وفق الدالة  ReferenceEquals  منطقية.
الدالة CopyTo :نستخدمها لنسخ مجموعة محارف من نص ما الى مصفوفة نصية,مع التذكير بان طول المصفوفة يجب ان يكون بعدد المحارف المراد نسخها.
المصفوفة تبدأ عادة من  0  فلتعريف مصفوفة من 4 عناصر نكتب (3)Array


مثال1:
PHP كود :
Dim Name As String "Adel Bin Shaker"
Dim Array(3) As Char
Name
.CopyTo(0, Array, 04)
 
For 
Each C As Char In Array
 
 MsgBox(C)
Next 


في المثال قمنا بنسخ احرف Adel  الى مصفوفة حروف وعدد الحروف اربعة لذا عرفنا مصفوفة من 4 عناصر تبدا من الصفر.
الدالة CopyTo  تاخذ 4 وسائط .
الوسيطة الاولى تحديد موقع النسخ في النص,
الوسيطة الثانية اسم المصفوفة المراد النسخ اليها,
الوسيطة الثالثة موقع النسخ داخل المصفوفة ,
الوسيطة الرابعة عدد المحارف المراد نسخها.




اختبار النصوص الفارغة , الدوال Empty , IsNullOrEmpty , IsNullOrWhiteSpace

في العادة النصوص الفارغة طولها 0  و ليست Null .
نستطيع تحديد نص فارغ عادة عبر المعامل  ""
و النتيجة واحدة لا يوجد فرق من ناحية الاداء
الدالة Empty و الدالة IsNullOrEmpty: ان استخدام الدالة بالشكل ()String.Empty يعد اسهل للقراءة و الفهم
مثال1:
PHP كود :
Dim value As String String.Empty
 
 If 
value "" Then
   MsgBox
("It's Empty")
End If
 
 
If 
String.IsNullOrEmpty(valueThen
   MsgBox
("It's Null Or Empty")
End If 

الدالة IsNullOrEmpty : لها العديد من الفوائد فهي تعود بقيمة منطقية في حال كان النص فارغ (Empty) او حال كان النص (Null,Nothing)
 
الدالة IsNullOrWhiteSpace متوفرة في الاصدار 4.5
النص الحاوي على مساحة فارغة واحدة لا يعد نص فارغ اساساً لأنه يحتوي على محرف بداخله , و في بعض الاحيان نود ان نختبر اذا كان النص يحتوي على مساحة فارغة او هو فارغ , هنا يأتي دور هذه الدالة
و للتنبيه هذه الدالة تعيد قيمة منطقية اذا تحقق الشرط , وهي تعيد True  في الحالات التالية:
1- اذا كان النص فارغ (Empty).
2- اذا كان النص =  Nothing
3- اذا كان النص يحتوي على مساحة واحدة فارغة مثل " "
مثال2:
PHP كود :
Dim Value1 As String Nothing
        Dim Value2 
As String "  "
 
 
       If String.IsNullOrWhiteSpace(Value1Then
            MsgBox
(1)
 
       End If
 
 
       If String.IsNullOrWhiteSpace(Value2Then
            MsgBox
(2)
 
       End If
 
 
       Dim Value3 As String "Ahmad"
 
       If String.IsNullOrWhiteSpace(Value3Then
            MsgBox
(3)
 
       End If 

من هنا يتضح لدينا ان فرق الاداء يأتي لصالح الدالة IsNullOrEmpty
وهما متشابهتان نوعا ما في العمل مع فارق فحص المساحة الفارغة في الدالة الاخيرة مما يزيد الكلفة.
يتبع في الجزء الثاني...
 
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد
#2
بارك الله فيك استاذي ابوليلى
موضوع مفيد جدا جدا جدا ( السهل الممتنع )

ارجو من مشرف القسم تثبيت الموضوع

زادك الله من علمه ورزقك من حيث لا تحتسب
اللهم يا ارحم الراحمين ارحم اخي اباليث رحمة واسعة
 
الرد
تم الشكر بواسطة: ابو ليلى
#3
استفدنا من طرحك المفيد
بارك الله فيك وفي عملك اخي ابو ليلى
Mish3l
الرد
تم الشكر بواسطة: ابو ليلى , ابو ليلى
#4
موضوع روعه ومنظم جدا احييك علي ذلك
بارك الله فيك
الرد
تم الشكر بواسطة: ابو ليلى
#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 حساسة لحالة الاحرف.

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

دوال خاصة للتعامل مع النصوص




توجد بعض الدوال الخاصة للتعامل مع النصوص سنقوم بالمرور على بعضها.

الدالة Cstr :
تقوم هذه الدالة بتحويل القيم الى الحالة النصية لها و هي تعالج انواع مثل (Integer,Boolen,Char)
مثال1:
PHP كود :
Dim str As String CStr(5)
 
str CStr(True)
 
str CStr("m"c

دالة بسيطة و لها فوائد.
 


 
الدالتان LSet-RSet
و الدالتان PadLeft-PadRight
نستخدمها لإضافة هوامش(مسافات فارغة)الى يسار النص او الى يمينه
مثال1:
PHP كود :
MsgBox(LSet("Example"10))
MsgBox(RSet("Example"16)) 

هما مشابهتان للدالتان PadLeft-PadRight تقريباً.
مثال2:باستخدام PadLeft
PHP كود :
Dim SomeWords() As String = {"Cat""Samer""Vb4"}
For 
Each word As String In SomeWords
MsgBox
(word.PadLeft(5))
Next 

كذلك أيضا تمكنك الدالتان PadLeft-PadRight من اضافة محارف ليسار و يمين النص.
مثال3:
PHP كود :
txt1.Text = ("One".PadLeft(6"."c))
txt1.Text = ("PassWord".PadRight(12"*"c)) 

تلاحظ وجود وسيطتين , الاولى عبارة عن رقم يعبر عن الطول الكلي للنص وهو 6 , و الثانية عبارة عن الرمز (.) كمحرف و الاضافة الى يسار النص
و عليه نكتشف ان الرمز (.) سيضاف 3 مرات الى يسار النص ليصبح طول النص = 6
نفس الكلام ينطبق على السطر الثاني فقط الاضافة تأتي الى يمين النص (اكتشف كم مرة سنضيف الرمز *)





اضافة سطر جديد لنص ما عبر الطريقة
Environment.NewLine
نستخدمها لإضافة سطر جديد لنص ما و ذلك لتقسيم النص الى عدة اسطر و هي سهلة الاستخدام و مشابهة تماما للطريقة التقليدية التي تستخدم (VbCrlF).
مثال1:
PHP كود :
Dim Msg As String "Hello.." Environment.NewLine " My Friends..."
Dim Msg2 As String "Hello.." vbCrLf " My Friends..."
MsgBox(Msg
 


تخزين النصوص في المصفوفات
او تحويل النصوص الى مصفوفات
مر معنا سابقا تحويل النص الى مصفوفة من المحارف.
الان حديثنا يختلف نوعا ما في بعض المواضع.
Convert String To Byte Array
تحويل النص الى مصفوفة من النوع بايت يسير و فعال عبر الدوال التي توفرها اللغة.
توفر اللغة الدالة ()ASCII.GetBytes
و هي تستقبل وسيطة من النوع النصي و تعيد لنا مصفوفة من النوع Byte.
مثال1:
PHP كود :
Dim Nmae As String "AboLayla"
Dim array() As Byte System.Text.Encoding.ASCII.GetBytes(Nmae)
 
For 
Each bt As Byte In array
 
  txt1.AppendText(bt.ToString " = " ChrW(bt) + Environment.NewLine)
Next 

الناتج من الكود السابق

65 = A
98 = b
111 = o
76 = L
97 = a
121 = y
108 = l
97 = a


كما ترى في المثال تم ترميز كل حرف في المصفوفة و بناءً عليه يمكننا تخزين البيانات الى ملف Binary عبر الطريقة BinaryWriter
و بطريقة عكسية يمكننا الحصول الى ما بداخل المصفوفة السابقة اذا عرفنا رموزها .. كما ترى في الاعلى و لنجرب باستخدام الدالة ()ASCII.GetString
مثال2:
PHP كود :
Dim array() As Byte = {6598111769712110897}
 
Dim Name As String System.Text.ASCIIEncoding.ASCII.GetString(array)
txt1.Text Name 

كما يمكنك جلب المحارف من المصفوفة السابقة ByteArray  وفق الدالة ASCII.GetChars
مثال3:
PHP كود :
Dim Chr() As Char System.Text.Encoding.ASCII.GetChars(array)
For 
Each ch As Char In Chr
      MsgBox
(ch)
Next 
 

 

تحويل النص الى قائمة
Convert String To List
اذا احتجت في يوم من الايام لتحويل النص الى قائمة فالعملية سهلة ان شاء الله.
مثال1:
PHP كود :
Dim Words As String "Vb,For,Arabs"
 
Dim arry() As String Words.Split(",")
 
Dim vals As List(Of String) = arry.ToList()
 
For 
Each val As String In vals
     MsgBox
(val)
Next 

في هذا المثال افترضت ان لدي نص و يوجد بها فاصل بين الكلمات و استخدمت الدالة Split للتخلص من الفواصل وخزنت الكلمات في المصفوفة array ومن ثم استخدمت الطريقة ()Arry.Tolist لتخزينهم في القائمة vals  .
ثم قمت بعرضهم وفق حلقة For للتأكد منهم.
 



توليد نصوص عشوائية

Random String
من باب ذكر المعلومة فقط احببت اضافتها
تحتاج احيانا الى توليد نصوص عشوائية بطرق بسيطة للاستفادة منها في مجالات شتى ,على سبيل المثال لتخزنها كمفاتيح للبيانات
و من احدى الطرق البسيطة استخدام الدالة
Path.GetRandomFileName تولد هذه الطريقة نص بطول 11 محرف  8 احرف صغيرة فقط مع لاحقة عشوائية لاسم الملف و يمكننا ازالة اللاحقة و الحصول على 4 محارف الاضافية ليصبح طول النص المولد 11 محرف وهو عدد مناسب نوعا ما
مثال1:
PHP كود :
Dim value As String ""
Dim px As String ""
 
For 0 To 15
   px 
Path.GetRandomFileName()
 
  px px.Replace(".""")
 
  value px
   MsgBox
(value)
Next 



اتمنى ان اكون وفقت في تقديم شيئ مفيد , يغطي طرق التعامل مع النصوص بما يخدم عملنا.
لا تنسونا من دعواتكم, و الله الموفق.

(12-12-16, 01:18 AM)جميل علي كتب : بارك الله فيك استاذي ابوليلى
موضوع مفيد جدا جدا جدا ( السهل الممتنع )

ارجو من مشرف القسم تثبيت الموضوع

زادك الله من علمه ورزقك من حيث لا تحتسب
جزالك الله خيراً اخي جميل و زادك رزقا وعلما
(12-12-16, 10:19 AM)tryold كتب : استفدنا من طرحك المفيد
بارك الله فيك وفي عملك اخي ابو ليلى
و بك بارك الله اخي مشعل جزاك الله خيراً
(12-12-16, 12:21 PM)ali.alfoly كتب : موضوع روعه ومنظم جدا احييك علي ذلك
بارك الله فيك
شكراً اخي علي و بارك الله بك ايضاً وجزاك خيراً
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد
#7
ما شاء الله لاقوة الا بالله اللهم اجعل جهدك في ميزان حسناتك و زادك من فضله و علمه
الرد
تم الشكر بواسطة: ابو ليلى
#8
بارك الله فيك
الرد
تم الشكر بواسطة: ابو ليلى
#9
ربنا يتقبل منك يارب ويجعله صدقة جارية لك موضوع مميز والأميز البساطة
الرد
تم الشكر بواسطة:
#10
مشاء الله عليك تقبل الله منك وجعله في ميزان حساناتك
الرد
تم الشكر بواسطة: elgokr


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Exclamation [VB.NET] التعامل مع ال CMD عن طريق ال TextBox YousefOkasha 5 200 02-06-18, 09:34 PM
آخر رد: YousefOkasha
  التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI - مقدمة RaggiTech 2 1,261 22-01-18, 12:49 AM
آخر رد: amna jamal
  التعامل مع الملفات الصوتية ........دردشة برمجية RaggiTech 8 4,814 28-11-17, 11:23 PM
آخر رد: ahmed4240
  تحويل Interface الي دوال API silverlight 0 167 25-09-17, 11:13 AM
آخر رد: silverlight
  الجمع بين النصوص vb.net Basil Abdallah 0 457 14-01-17, 01:40 PM
آخر رد: Basil Abdallah
  التعامل مع جهاز الكمبيوتر من Command Prompt silverlight 7 895 22-12-16, 06:07 PM
آخر رد: silverlight
Video [درس فيديو] هام مرة اخري تحذير للجميع في التعامل مع try والتكرار لعدد كبير ali.alfoly 1 502 13-12-16, 03:59 PM
آخر رد: Fantastico
  [درس فيديو] تحذير هام في التعامل مع For و Try ali.alfoly 3 722 07-12-16, 12:43 AM
آخر رد: silverlight
Wink [مقال] كفية التعامل مه الجملة الشرطية IF alims 8 5,651 19-11-16, 01:06 AM
آخر رد: LoveVb
  ترجمة النصوص من الإنجليزية الي العربية بين الواقع و الخيال silverlight 0 1,184 19-12-15, 05:12 PM
آخر رد: silverlight

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


يقوم بقرائة الموضوع: بالاضافة الى ( 2 ) ضيف كريم