تقييم الموضوع :
  • 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
وهما متشابهتان نوعا ما في العمل مع فارق فحص المساحة الفارغة في الدالة الاخيرة مما يزيد الكلفة.
يتبع في الجزء الثاني...
 
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}


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

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

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


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