الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكنك تعداد تكرار كلمة في نص معين بواسطة ال Linq.

بدأه Ayoub JAMAL EL IDRISSI في 23 ديسمبر 2007 · 1 رد · 2,602 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

مقدمة :

كنت قبل مدة بكتابة مقال حول ال LINQ في الفيجوال بيسك 9 :

نظرة على جديد الفيجوال 9 -الجزء الأول

نظرة على جديد الفيجوال 9 -الجزء الثاني

و قام الأخ سامر سلو أيضا مشكورا بكتابة دروس حول الجديد في ال VS2008 من ضمنها مقدمة لتقنية ال LINQ و تجدونها هنا :

دروس Visual Basic 2008

الآن و بعد قراءتك لهذه المقدمات لهذه التقنية دعنا نخوض في التفاصيل و البدأ بعمل أمثلة حتى نستطيع فهم التقنية أكثر فأكثر، أنت تعلم أن هذه التقنية يمكن استعمالها مع كل أنواع البيانات تقريبا يعني ممكن نعمل بها مع الكائنات Objects و ال XML و ال SQL.

الآن سوف نقوم بالخوض في استعمالات ال LINQ مع النصوص (LINQ And Strings) لذا سيكون درسنا الأول بعنوان : كيف يمكنك تعداد تكرار كلمة في نص معين بواسطة ال LINQ.

التفاصيل

المثال الذي سأطرحه هوفقط من أجل شرح امكانية استعمال ال LINQ من اجل البحث في نص معين و تعداد تكرار كلمة معينة لذا لن نبحث في تسريع الكود او أمور أخرى و لن يكون الكود احترافي لأنه و بكل بساطة من اجل عمل ما نريد يمكنك استعمال Methods أخرى منها Matches التي تستعمل ال Regular Expression أو الخاصية IndexOf لذا لو كنت بصدد عمل برنامج كامل لا أنصحك باستعمال ال LINQ لكن دعه لأمور أكثر تعقيدا و احترافية و التي قد نراها لاحقا، من أجل تنفيذ ما نريد قم بانشاء مشروع جديد في الفيجوال ستوديو 2008 من نوع Windows Application وطبعا نوع ال FrameWork هو 3.5 الآن اضف TextBox و Button بعد الدخول الى الكود قم باستيراد فضاء الأسماء :

Imports System.LINQ

الكود في ال Button سيكون كالتالي :

 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		Dim Text As String = "this is a simple text that we will use it in our exemple so if you are interested pleaz let a comment coz that will mean that you love VB9 like me"
		Dim WordOccurences As Integer
		Dim SplitText() As String = Text.Split(New String() {" "}, StringSplitOptions.RemoveEmptyEntries)
		Dim OurQuery = From word As String In SplitText Where word.ToLower = TextBox1.Text.ToLower Select word
		WordOccurences = OurQuery.Count
		MsgBox(WordOccurences)
	End Sub

شرح الكود :

أولا قمنا بتحديد متغير وضعنا فيه نص (طبعا يمكنك انشاء TextBox آخر و تأخذ محتواه لتبحث فيه) و هذا النص هو الذي ستجري عليه عملية البحث

قمنا بعد ذلك بتحديد متغير من نوع Integer و هو الذي سيحتوي على عدد تكرار الكلمة التي سنبحث عنها

هناك نقطة مهمة وهي أنه اذا اردنا ان نبحث في نص بواسطة ال LINQ يجب تحويل النص الى Array وذلك ماقمنا به الآن حيث استعملنا خاصية Split وقسمنا النص تبعا للفراغات الموجودة فيه و بالنسبة ل StringSplitOptions.RemoveEmptyEntries فهي ببساطة تقوم بحذف ال Elements الفارغة

الآن النقطة المهمة و هي كتابة ال Query الخاصة بالبحث و ال Query هي :

From word As String In SplitText Where word.ToLower = TextBox1.Text.ToLower Select word

لنترجمها للغةالعربية :D

من word في SplitTest حيث word.ToLower = TextBox1.Text.ToLower اختر word

هههههههه

المهم word هنا هو متغير قد يقول البعض "لكن انت لم تقم بتعريفه ؟؟؟" أقول له اذن أنت لم تقرأ المقدمات التي ذكرتها في المقدمة :D

المتغير اذن هنا سيكون String وبكل بساطة المتغير word سوف يحتوي كلمرة على Element من ال Elements الموجودة في ال Array التي أنشأناها من النص SplitText و طبعا لن يرجع كل الكلمات لكن على حسب الشرط المحدد :

Where word.ToLower = TextBox1.Text.ToLower

أضفنا .ToLower فقط للبحث عن الكلمات كيفما كانت يعني لوبحثنا عن THe فسيرجع كل ال Occurences لهذه الكملة كيفما كانت حالة أحرفها (the,ThE,THE..)

أخيرا نريد معرفة عدد التكرارات الشئ الذي سنعرفة من خلال السطر التالي :

WordOccurences = OurQuery.Count

طبعا كما ترون OurQuery لها خاصية Count التي تعيد عدد النتائج

ونظهر النتيجة بعد ذلك في MsgBox

وهكذا نكون قد انتهينا و بقي لكم فقط التطبيق و الاستمتاع بجديد الفيجوال بيسك 9

خاتمة :

أتمنى أن تكون هذه اللمحة قد أفادتكم و نلتقي في باذن الله في درس مقبل لتكملة ال LINQ And STRINGS

و السلام عليكم

تم تعديل هذه المشاركة بواسطة Ayoub JAMAL EL IDRISSI في 23 ديسمبر 2007 في 17:41

#2

ألف شكر .. لم أتوقع أن تكون تقنية ال Linq بهذه الروعة والبساطة أيضا .. والقوة

شرح رائع ومبسط ومفهوم

مشكوووووووووووور

بارك الله فيك

مواضيع مشابهة