طريقة VB.NET الفرعية مع EXAMPLE
⚡ ملخص ذكي
VB.Net استخراج سلسلة فرعيةtracتُعيد هذه الدالة جزءًا من سلسلة نصية بتحديد فهرس بداية وطول اختياري. تنتمي هذه الدالة إلى فئة String، وتحسب الأحرف من الصفر، وتُعيد سلسلة نصية جديدة تمامًا دون تغيير السلسلة الأصلية.
ما هو الجزء الفرعي من السلسلة؟
تُستخدم دالة Substring للحصول على جزء من سلسلة نصية محددة. هذه الدالة مُعرّفة في فئة String الخاصة بـ Microsoft VB.Netيجب عليك تحديد فهرس البداية الذي سيتم استخراج السلسلة منهtracتيد. سيكون الخيط extracted من ذلك الفهرس حتى الطول الذي تحدده.
قبل السابقtracعند التعامل مع النصوص، يساعد ذلك على فهم الصيغة التي تتوقعها طريقة Substring.
بناء جملة السلسلة الفرعية
تقبل الوظيفة وسيطتين كما هو موضح في بناء الجملة التالي:
Public Function Substring(ByVal start_Index As Integer, ByVal sub_length As Integer) As String
هنا،
- تشير الكلمة الأساسية ByVal إلى القيمة التمريرية، وهي آلية لتمرير الوسائط إلى الوظائف.
- يمثل start_Index الفهرس الذي سيتم الحصول منه على السلسلة الفرعية.
- يشير sub_length إلى الطول الذي سيتم نسخ السلسلة النصية إليه بدءًا من start_Index. يُقاس هذا الطول بعدد الأحرف. ستُعيد الدالة extracسلسلة فرعية ted.
يبدأ فهرس البداية من الصفر، لذا فإن الحرف الأول من السلسلة يقع في الموضع 0 بدلاً من الموضع 1.
بعد تحديد الصيغة، توضح الأمثلة التالية طريقة Substring أثناء عملها داخل تطبيق وحدة التحكم.
أمثلة
الخطوة 1) إنشاء تطبيق وحدة تحكم جديد.
الخطوة الثانية) أضف الكود التالي إليه:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim subst As String = st.Substring(0, 4) Console.WriteLine("The substring is: {0}", subst) Console.ReadKey() End Sub End Module
الخطوة 3) انقر على زر "ابدأ" من شريط الأدوات لتنفيذ الكود. يجب أن تحصل على النتيجة التالية:
لقد استخدمنا الكود التالي:
شرح Code:
- إنشاء وحدة تسمى Module1.
- بدء الإجراء الفرعي الرئيسي.
- تعريف متغير نصي باسم st وتعيين القيمة Guru99 له.
- تعريف متغير سلسلة نصية باسم 'subst' كسلسلة فرعية من السلسلة النصية 'st' بدءًا من الفهرس 0 وطولها 4 أحرف.
- طباعة بعض النصوص والسلسلة الفرعية أعلاه على وحدة التحكم.
- إيقاف نافذة وحدة التحكم مؤقتًا لفترة من الوقت في انتظار قيام المستخدم باتخاذ إجراء لإغلاقها.
- نهاية الإجراء الفرعي الرئيسي.
- نهاية الوحدة.
حجة واحدة
ماذا لو قمنا بتمرير وسيطة واحدة فقط إلى الوظيفة؟ ستقوم الوظيفة بنسخ جميع البيانات الموجودة في السلسلة التي تبدأ من هذا الفهرس. ما يحدث هو أن وظيفة السلسلة الفرعية تنسخ داخليًا جميع بيانات السلسلة الموجودة في هذا الفهرس بالإضافة إلى تلك التي تتبع هذا الفهرس. على سبيل المثال:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim subst As String = st.Substring(4) Console.WriteLine("The substring is: {0}", subst) Console.ReadKey() End Sub End Module
انقر فوق زر البدء لتشغيل الكود. يجب أن يؤدي ذلك إلى إرجاع ما يلي:
أعادت دالة Substring القيمة 99. مررنا المعامل 4 إلى الدالة، مما يعني أنها ستبدأ في الاستخراج.tracاستخرج السلسلة الفرعية من الحرف الموجود في الفهرس 4 إلى نهاية السلسلة. 9 هو الحرف الموجود في الفهرس 4 من السلسلة Guru99، ومن هنا جاء السابقtracبدأ الأمر هناك.
إلى جانب الحذف من فهرس واحد، يمكن لطريقة Substring أيضًا استهداف الأحرف الموجودة في منتصف السلسلة.
الشخصيات الوسطى
من الممكن أيضًا أن نحصل على الأحرف الوسطى من السلسلة المعنية. في هذه الحالة، كل ما علينا فعله هو توفير الفهرس الابتدائي وطول السلسلة التي نحتاجها. في المثال التالي، نحصل على سلسلة فرعية من السلسلة المحددة من الفهرس 2 وسيكون طول السلسلة 2 حرفين:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim subst As String = st.Substring(2, 2) Console.WriteLine("The substring is: {0}", subst) Console.ReadKey() End Sub End Module
انقر فوق زر البدء من شريط الأدوات لتشغيل الكود. ستحصل على النتيجة التالية:
في المثال أعلاه، أعادت دالة Substring القيمة ru. مررنا المعاملات (2، 2) إلى الدالة. يشير الرقم 2 الأول إلى بدء تنفيذ extracيُشير الرقم 2 الثاني إلى أن الدالة ستُعيد سلسلة فرعية بطول حرفين فقط. وهذا يعني أن...tracيجب أن يبدأ استخراج السلسلة الفرعية من العنصر الموجود في الفهرس 2 من السلسلة Guru99، وهو r. بما أن السلسلة الفرعية المُعادة يجب أن يكون طولها حرفين فقط، فإن extracلن يتجاوز الأمر الحرف 'u'، وبالتالي أعاد القيمة 'ru'.
حرف واحد
يمكننا استخدام دالة Substring للحصول على حرف واحد من سلسلة. في مثل هذه الحالة، من الضروري إجراء تخصيص ولكن يمكن الوصول إلى الحرف مباشرة. هذا أسرع قليلاً. يوضح المثال التالي طريقتين يمكننا من خلالهما تحقيق ذلك:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim mid1 As Char = st(1) Console.WriteLine(mid1) Dim mid2 As String = st.Substring(1, 1) Console.WriteLine(mid2) Console.ReadKey() End Sub End Module
انقر فوق زر البدء لتشغيل الكود. ستحصل على النتيجة التالية:
لقد استخدمنا الكود التالي:
شرح Code:
- إنشاء وحدة تسمى Module1.
- بدء الإجراء الفرعي الرئيسي.
- تعريف متغير نصي باسم st وتعيين القيمة Guru99 له.
- تحديد متغير سلسلة يسمى mid1 والحصول على الحرف في الفهرس 1 من String st. سيتم تعيين هذا الحرف للمتغير mid1.
- طباعة الحرف أعلاه على وحدة التحكم.
- تعريف متغير سلسلة اسمه mid2 والحصول على الحرف عند الفهرس 1 بطول 1 من String st. طول 1 يعني أنه سيعيد نفس الحرف في فهرس البداية. يبدأ العد من فهرس البداية الذي تحدده. سيتم تعيين هذا الحرف للمتغير mid2.
- طباعة الحرف أعلاه على وحدة التحكم.
- إيقاف نافذة وحدة التحكم مؤقتًا لفترة من الوقت في انتظار قيام المستخدم باتخاذ إجراء لإغلاقها.
- نهاية الإجراء الفرعي الرئيسي.
- نهاية الوحدة.
بمجرد أن تشعر بالراحة،tracعند استخراج السلاسل الفرعية، يجدر معرفة كيفية التعامل مع الأخطاء التي قد تثيرها الطريقة.
أخطاء شائعة في السلاسل الفرعية وكيفية تجنبها
تُولي دالة Substring اهتمامًا بالغًا بالقيم المُمرَّرة إليها. فعندما يقع أحد الوسائط خارج نطاق السلسلة النصية، يُصدر VB.Net استثناءً من نوع ArgumentOutOfRangeException ويوقف البرنامج أثناء التشغيل. يساعدك فهم هذه القواعد على تجنب هذا الخطأ الشائع.
تُثير هذه الطريقة الاستثناء في ثلاث حالات:
- مؤشر البداية هو رقم سالب.
- يكون فهرس البداية أكبر من طول السلسلة النصية.
- يشير مجموع start_Index و sub_length إلى ما بعد نهاية السلسلة النصية.
من الأخطاء الشائعة استخدام نتيجة دالة IndexOf دون التحقق منها أولاً. فعندما لا تجد IndexOf الحرف المطلوب، تُرجع القيمة -1، وتمرير -1 إلى دالة Substring يُسبب استثناءً. الكود التالي يحمي من ذلك:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim pos As Integer = st.IndexOf("9") If pos >= 0 Then Dim subst As String = st.Substring(pos) Console.WriteLine(subst) Else Console.WriteLine("Character not found") End If Console.ReadKey() End Sub End Module
يؤدي التحقق من صحة الفهرس قبل الاستدعاء إلى ضمان تشغيل تطبيقك بسلاسة، حتى عندما لا تحتوي سلسلة الإدخال على الحرف الذي تتوقعه.
الحصول على سلسلة فرعية قبل أو بعد حرف
من المهام الشائعة ما يلي:tracيُستخدم هذا الأسلوب لاستخراج النص الذي يظهر قبل أو بعد حرف معين، مثل فصل عنوان البريد الإلكتروني عند علامة @. لا توفر لغة VB.Net دالة مخصصة لهذا الغرض، ولكن يمكنك دمج دالتي IndexOf و Substring لتحقيق ذلك.
النص قبل الحرف: قم باستدعاء الدالة IndexOf لتحديد موقع الحرف، ثم مرر هذا الفهرس كطول للدالة Substring:
Module Module1 Sub Main() Dim email As String = "guru99@example.com" Dim position As Integer = email.IndexOf("@") Dim namePart As String = email.Substring(0, position) Console.WriteLine(namePart) Console.ReadKey() End Sub End Module
يقوم الكود بطباعة guru99، وهو الجزء من السلسلة النصية الذي يسبق علامة @.
النص الذي يلي الحرف: أضف 1 إلى الفهرس ودع دالة Substring تعمل حتى نهاية السلسلة النصية:
Dim domainPart As String = email.Substring(position + 1) Console.WriteLine(domainPart)
هذا يُعيد example.com. عندما يظهر حرف أكثر من مرة، استخدم LastIndexOf بدلاً من IndexOf للبدء من آخر ظهور له بدلاً من أول ظهور.
مقارنة بين وظائف السلسلة الفرعية والوظائف اليسرى واليمنى والوسطى
يرث Visual Basic ثلاث دوال نصية قديمة من الإصدارات السابقة: Left و Right و Mid. وهي موجودة في Microsoftمساحة اسم VisualBasic ويمكن أن تبدو مألوفة أكثر للمطورين القادمين من VB الكلاسيكي.
- Left(string, n) تُعيد هذه الدالة أول n حرف من سلسلة نصية.
- Right(string, n) تُعيد هذه الدالة آخر n حرفًا من سلسلة نصية.
- منتصف (سلسلة، بداية، طول) تُعيد جزءًا من موضع البداية، تمامًا مثل Substring.
يكمن الاختلاف الرئيسي في طريقة حساب المواضع. تعتمد دالة Mid على الترقيم بدءًا من 1، لذا يكون الحرف الأول في الموضع 1، بينما تعتمد دالة Substring على الترقيم بدءًا من 0. تُعد Substring الطريقة القياسية في .NET وتعمل بنفس الطريقة في جميع لغات .NET، لذا يُنصح باستخدامها في كتابة التعليمات البرمجية الجديدة. احتفظ بدوال Left وRight وMid لصيانة مشاريع Visual Basic القديمة.






