![]() |
|
[كود] تصحيح او تعديل كود البحث في نص مشكل - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : [كود] تصحيح او تعديل كود البحث في نص مشكل (/showthread.php?tid=36422) |
تصحيح او تعديل كود البحث في نص مشكل - عبد الهادي بهاب - 16-09-20 السلام عليكم
عندي نص مشكل في richtextBox
الان اكتب في مربع نص textBox كلمة غير مشكلة
سيبحث عن اي كلمة مهما كانت تشكيلها و يلونها
حاولت بعدة طرق ........ لكن انجح طريقة هي نوعا ما طويلة في الانجاز
تعتمد الطريقة على وضع مصفوفة بكل الحركات فتحة و ضمة و شدة و شدة وفتحة و تنوين و سكون ........الخ
PHP كود : Dim harkat() As String = {"", "َ", "ُ", "ِ", "ّ", "ْ", "ًّ", "ُّ", "ِّ", "ً", "ٌ", "ٍ"} ثم يقوم الكود بوضع مصفوفة تضع فيها كل الاحتمالات التي يمكن ان تكون بها الكلمة يعني
من اجل مصفوفة حركات بها 12 عنصر ........ من اجل كلمة من ثثلاث حروف سيكون عدد الاحتمالات هو 1728
اي 12 قوة 3 ......... اي اذا اكنت الكلمة من خمسة حروف فالاحتمالات هي 12 قوة 5 اي 248832
هذا كود انشاء الاحتمالات و عرضها في ليسبوكس للاطهار و حفظها في مصفوفة
PHP كود : [align=center] Dim str = TextBox1.Text[/align]ثم يقوم كود البحث في عنصر richtextbox بالمقارنة بكل هذه الاحتمالات و يقوم بتلوينها
كود البحث ذاحل الريشبوكس
PHP كود : [align=center] Dim mm = 0[/align]لاحظ معي من اجل كلمة ( حمد )
في النص التالي ( مُحَمَدٌ حَمِدَ الله فهو مَحْمُودٌ أحْمَد فلله الحمد و الحَمْد حَمَّد تَحمِيدا حْمِد استحْمَدَ )
النتيجة
النتيجة مرضية الى حد ما
يعين الكود صالح ( فقط ) لكمة من 3 حروف ..........لذلك في الملف السورس حددت 3 حروف كطول اقص لتمستبوكس
----------------------
سؤالي يا كرام كيف اعدل على الكود ليتحمل كلمة من اكثر من 3 حروف .........
و ايضا الغاء تشكيل الكلمة التي نبحث عنها ليعمل الكود طبعا
الملف السورس
[attachment=25695]
شكرا
RE: تصحيح او تعديل كود البحث في نص مشكل - معاند الحظ - 16-09-20 وعليك السلام ورحمة الله وبركاته اخوي عبد الهادي هذا السؤال من فطاحلة الاسئلة وانا حاولت ولم اوفق لان طريقة الحل بحسب اسلوبي معقدة جدا وتحتاج الى وقت طويل لكني الحمدلله استمتع بمثل هذي الاسئلة واسمحلي اعرض محاولة حلي من باب تقديري لفكرة السؤال وشكرا كود : Public Class Form1RE: تصحيح او تعديل كود البحث في نص مشكل - عبد الهادي بهاب - 16-09-20 السلام عليكم فيه طريقة اخرى .........حاولت معها ..........بطريقة اخرى اسرع و اسهل من الاولى وهي ان نستدعي نص الموجود في ritchbox و نقوم بحذف التشكيل عنه PHP كود : Dim Str = RichTextBox1.Textالان نضع مصفوفتين بحيث نفكك النصين الاول المشكل و الاخر الغير مشكل PHP كود : Dim Arr1 = Str.Split(" ")الان سنحذف التشكيل من الكلمة المبحوث عنها PHP كود : Dim txtSerch = ""الان سنقارن كل كلمة في المصفوفة الثانية الغير مشكلة مع الكلمة المبحوث عنها الغير مشكلة و من ثم نستخلص رقم الكلمة في المصفوفة ........و نلون الكلمة من نفس الرقم من المصفوفة الثانية في الريتبوكس PHP كود : Dim mm = 0الكود سيلون كل الكلمة التي فيها الكلمة المبحوث عنها ( كل الكلمة و ليس جزء منها ) الملف فيه الطريقيتين [attachment=25696] ---------- ملاحظة : يجب تعديل الكود في حالى المسافات ....... في حالة حركات جديدة في خطوط كالقران الكريم (16-09-20, 03:08 AM)معاند الحظ كتب : وعليك السلام ورحمة الله وبركاته شكرا على المحاولة استاذ .......الكود لا يجلب الا 12 احتمال ....و بالتالي هامش الخطا كبير ....... ربي يجازيكم ...نواصل معكم كسب الرهان RE: تصحيح او تعديل كود البحث في نص مشكل - معاند الحظ - 16-09-20 اعرف يا اخي انه غير صحيح لكني حبيت اشارك واضع محاولتي الاولى لاني سجلت السؤال هذا في بالي كتحدي لي اني اوجد طريقة بسيطة للحل. ولهذا لم اكمل لان الطريقة التي في بالي الان معقدة جدا تحياتي لك RE: تصحيح او تعديل كود البحث في نص مشكل - Mohamad Anan - 16-09-20 و عليكم السلام و رحمة الله و بركاته تم تعديل المثال في المرفقات [attachment=25698] RE: تصحيح او تعديل كود البحث في نص مشكل - Anas Mahmoud - 16-09-20 السلام عليكم اخواني الكرام اسمحولي ان ادلي بدلوي في هذا الموضوع الحقيقة الموضوع مهم فعلا ومثير للاهتمام لكل من يفكر به فعلا حلي عبارة عن خليط من ال Regex وال Linq لو فكرنا في النص المطلوب ايجاده باحتمالاته : حَمد ، حُمِدَ ، حَمْدْ ، حمد المشترك بينهم هو انهم مكونين من الحروف المطلوب البحث عنها : حمد ، وبعد كل حرف حركة تشكيل او اكثر ح بعدها احد حروف التشكيل م بعدها احد حروف التشكيل د بعدها احد حروف التشكيل بحثت فوجدت حروف التشكيل تقع في المدى [\u064B-\u0652] يصبح تعبير Regex الذي يمثل عملية البحث هذه : ح[\u064B-\u0652]* م[\u064B-\u0652]* د[\u064B-\u0652]* الحرف ثم مدى التشكيل [\u064B-\u0652] ثم * للدلالة على ان التشكيل اختيارى ويمكن تكراره في الحقيقة هذا فعلا كل ما يتطلبه ايجاد "حمد" داخل التشكيل واضافتهم لليست بوكس : كود : Dim matches = Regex.Matches(RichTextBox1.Text, "ح[\u064B-\u0652]*م[\u064B-\u0652]*د[\u064B-\u0652]*")ولكن سأخد خطوة للوراء لتعميم العملية على اي كلمة ، الان وصلنا الى انه يجب علينا ان نضع بعد كل حرف [\u064B-\u0652]* ونستخدمه ك Regex ونحصل على النتائج ، لفعل ذلك ببساطة : نعرف متغير عام : كود : Dim matches As MatchCollectionثم لملئ الليست بوكس كود : Dim word As String = TextBox1.Textطيب حصلنا على النتائج كيف نغير اللون ؟ نتيجة Regex.Matches تكون عبارة عن كوليكشن من نوع Match نتيجة البحث الفئة Match تحتوي على خصائص مفيدة مثل Index و Length يكون كود تغيير اللون ببساطة : كود : RichTextBox1.SelectAll()[attachment=25708] ولاني احب Linq كثير ، ايضا هذه طريقة ايجاد تعبير البحث المناسب باستخدام Linq : كود : Dim word As String = TextBox1.Textاذا لم تكن مهتم ب Linq لا تشغل بالك ابدا باخر كود ، الطريقة الاولى تعمل بكفائة عالية جدا ربما اضع الطريقة في موضوع منفصل للافادة المصادر : https://stackoverflow.com/questions/29624730/regex-arabic-vocalization-matching https://stackoverflow.com/questions/5224267/javascriptremove-arabic-text-diacritic-dynamically/7193622 https://stackoverflow.com/questions/38391633/regular-expression-find-matching-characters-in-order https://stackoverflow.com/questions/3849261/faster-way-to-color-all-occurences-in-a-richtextbox-in-c-sharp RE: تصحيح او تعديل كود البحث في نص مشكل - عبد الهادي بهاب - 16-09-20 ما شاء الله ... تمام التمام ارجو ان يجد الموضوع طريقه للاستعمال ربي يجازيكم خيرا |