![]() |
|
[سؤال] البحث مع تجاهل التشكيل في الريتش بوكس - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغات البرمجة الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=4) +--- قسم : قسم البرمجة بتقنية WPF (http://vb4arb.com/vb/forumdisplay.php?fid=86) +--- الموضوع : [سؤال] البحث مع تجاهل التشكيل في الريتش بوكس (/showthread.php?tid=16553) |
البحث مع تجاهل التشكيل في الريتش بوكس - السندبااد - 23-07-16 السلام عليكم ورحمة الله وبركاته
سابقاً تجاوزت مشكلة البحث مع التشكيل سواء في قواعد البيانات أو أدوات العرض ، والحمد لله تجاوزت ذلك في تقنية WPF إلا أنني اصطدمت بحاجز أداة RichTextBox ؛ فعند البحث في الريتش بوكس يعطيني نتائج صحيحة ولكن لو كان البحث مع تجاهل التشكيل فلن يتم تلوين كلمة البحث الموجودة بشكل صحيح ، البرنامج على هذ الرابط :
وهنا صفحة البرنامج وهو مفتوح المصدر تم نشره على صفحات هذا المنتدى سابقاً :
الملف باسم : Makalat-Source.rar
طبعاً أنا برمجت دالة لتجاهل التشكيل وستجدها ضمن البرنامج باسم ReplaceString وهي تعمل بشكل جيد كما سترى فقد استخدمتها ضمن البحث في قواعد البيانات مع تجاهل التشكيل المشكلة فقط في تلوين الكلمة عندما يكون النص في الريتش بوكس مشكولاً بعد أن تحمل السورس شغل البرنامج واختر مقالة التحيات والصلوات الإبراهيمية واكتب في مربع البحث مثلاً كلمة الله ثم انقر زر "بحث في هذه المقالة" ستجد النتائج صحيحة ولكن التلوين خطأ لأن كلمة الله في الريتش بوكس مشكولة ولو بحثت في مقالة سامي باني حسين عن كلمة سامي ستجد النتائج صحيحة والتلوين صحيح لأن كلمة سامي في الريتش بوكس غير مشكولة RE: البحث مع تجاهل التشكيل في الريتش بوكس - السندبااد - 25-07-16 سبب المشكلة التي وضعتها هو أنه عند البحث عن كلمة غير مشكولة فإنه يقوم بحسب عدد حروفها وعدد الخانات في الجملة ليبدأ التلوين من عندها ؛ مثلاً : بسم الله الرحمن الرحيم ، عند البحث عن كلمة الرحيم سيعرف أن عدد الحروف 6 وبداية الكلمة عند الخانة 17 وبناء عليه سيتم التلوين ، ولكن لو كانت الجملة مشكولة فهنا سيحدث التشويش ؛ لأن التشكيل يعتبر خانة ؛ فكلمة الرَّحيم سيعتبر أن عدد حروفها 8 ، وهكذا.
بعيداً عن هذه الطريقة وصلت لحل عن طريق Regex وكانت النتائج مذهلة ومرضية 100 % ولكن المشكلة أن البحث عن طريق Regex سيُفقِد الريتش بوكس تنسيقها وسيكون لها تنسيق مخصص بعد البحث.
RE: البحث مع تجاهل التشكيل في الريتش بوكس - السندبااد - 27-07-16 بصراحة أنا دخت بالنت والبحث والتجريب حتى أصل لكود احترافي
ولكن الفضل لله تعالى وكرمه وصلت إلى الكود الاحترافي الذي يُمكنني من خلاله البحث في الريتش بوكس مع المحافظ على تنسيقاتها وترتيبها
البحث مع تجاهل التشكيل ، سواء البحث عن كلمة واحدة أو عدة كلمات ، وعندما يعطيك النتيجة ستكون الكلمة ملونة حتى لو كانت في الريتش مشكولة
إليكم الكود :
كود : Dim range As New TextRange(RichTxtPost.Document.ContentStart, RichTxtPost.Document.ContentEnd)وهذه الصورة لا تحتاج لتعليق :
[attachment=11268] الجميل في هذا الكود وفي Regex أنك تستطيع تنويع البحث فمثلاً لو بحثت عن لفظ الجلالة الله بدون فستخرج لك في كل الحالات مرفوعة ومجرورة ومكسورة ولو بحث عن لفظ الجلالة اللهُ في حالة الرفع فستخرج لك النتائج في حالة الرفع فقط على فكرة كوننا نتحدث عن تجاهل التشكيل هنالك دالة لحذف التشكيل وتجاهله من أي عبارة
أو حتى لاستخدامها في البحث داخل قاعدة البيانات وهذه الدالية غير دالة ReplaceString التي استخدمتها أنا في برنامج خزانة المقالات بل هي دالة RemoveDiacritics تفضلوا كود الدالة : كود : Private Shared Function RemoveDiacritics(text As String) As StringRE: البحث مع تجاهل التشكيل في الريتش بوكس - الشاكي لله - 27-07-16 الحمدلله انك وجدت الحل
RE: البحث مع تجاهل التشكيل في الريتش بوكس - الوادي - 27-07-16 روووعة، باينه من الصورة. هل يمكن تطبيق هذا البحث الرائع على RichTextBox الخاصة بالجوال بيسيك أو العملية مخصصة لأدوات wpf RE: البحث مع تجاهل التشكيل في الريتش بوكس - السندبااد - 27-07-16 (27-07-16, 03:12 AM)الشاكي لله كتب : الحمدلله انك وجدت الحل ربنا يكرمك أخي وأستاذي العزيز
أنت دوماً سبّاق للخير ولا تقصر أبداً ![]() (27-07-16, 01:21 PM)الوادي كتب : روووعة، باينه من الصورة. أهلاً بك أخي العزيز
نعم يمكن لأن Regex مدعومة في الفيجوال بيسك المسألة بسيطة جداً في الفيجوال بيسك اكتب كوداً عادياً للبحث في الريتش بوكس مع تلوين الكلمة ثم عدل في الكود بإضافة التعليمات المتعلقة بـ Regex الموجودة أول الكود السابق RE: البحث مع تجاهل التشكيل في الريتش بوكس - السندبااد - 28-07-16 السلام عليكم ورحمة الله وبركاته
من أراد أن يبحث عن أكثر من كلمة في الريتش بوكس فليستخدم هذا الكود :
كود : 'إما أن تعمل مصفوفة بهذا الشكلRE: البحث مع تجاهل التشكيل في الريتش بوكس - Anas Mahmoud - 03-11-20 صراحة اول مرة اشاهد هذا الموضوع المفيد بحق ، وكنت قد بحثت عن هذا الموضوع كثيرا فعلا وتوصلت للحل باستخدام Regex بطريقة مشابهة جدا ، سعيد اني وجدت من تحدث في هذا الموضوع هنا على المنتدى من قبل وخصوصا "[\u064B-\u0653]*" السحرية ، وحقيقة زاد حبي لل Regex بعدها كثيرا وعزمت على ان اطور الطريقة اكثر لتشمل حالات اكثر وتوفر طريقة سلسة للبحث داخل النصوص العربية ان شاء الله جزاك الله خير الجزاء وبارك لك RE: البحث مع تجاهل التشكيل في الريتش بوكس - السندبااد - 03-11-20 (03-11-20, 02:14 PM)Anas Mahmoud كتب : صراحة اول مرة اشاهد هذا الموضوع المفيد بحق ، وكنت قد بحثت عن هذا الموضوع كثيرا فعلا وتوصلت للحل باستخدام Regex بطريقة مشابهة جدا ، سعيد اني وجدت من تحدث في هذا الموضوع هنا على المنتدى من قبل هذا الموضوع كان شغلي الشاغل، ودخلت في عدة حوارات سابقاً حوله؛ منها هذا هنا.
حقيقة أحييك على جهدك الرائع في الوصول إلى حل، واليوم كنت أقرأ موضوعك في هذا الخصوص، وليتك بالفعل تقوم بعمل تطوير للطريقة؛ لأن هذا من أهم المواضيع للمبرمجين، أضف أن البعض يشكو من Regexبأنها بطيئة، فإيجاد طريقة سلسلة سيكون شيئاً رائعاً.
أسأل الله تعالى أن يستجيب دعواتك الطيبة، وأن يرحم والدك ويجعله في زمرة الأنبياء والشهداء والصالحين
![]() |