البحث والاستبدال

يمكنك التنقل بسهولة داخل المستند باستخدام لوحة المفاتيح والماوس، ولكن إذا كان لديك العديد من الصفحات للتمرير خلالها، فسوف يستغرق الأمر بعض الوقت للعثور على نص معين في مستند طويل. سيكون الأمر أكثر استهلاكا للوقت عندما تريد استبدال أحرف أو كلمات معينة استخدمتها في المستند الخاص بك. تتيح لك وظيفة" البحث والاستبدال " العثور على سلسلة من الأحرف في مستند واستبدالها بتسلسل آخر من الأحرف.

Aspose.Words يسمح لك بالعثور على سلسلة معينة أو نمط تعبير عادي في المستند واستبداله ببديل دون تثبيت واستخدام تطبيقات إضافية مثل Microsoft Word. سيؤدي ذلك إلى تسريع العديد من مهام الكتابة والتنسيق، مما قد يوفر لك ساعات من العمل.

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

طرق لإيجاد واستبدال

Aspose.Words يوفر طريقتين لتطبيق عملية البحث والاستبدال باستخدام ما يلي:

  1. Simple string replacement - للعثور على سلسلة معينة واستبدالها بسلسلة أخرى، تحتاج إلى تحديد سلسلة بحث (أحرف أبجدية رقمية) سيتم استبدالها وفقا لجميع التكرارات بسلسلة استبدال أخرى محددة. يجب ألا تحتوي كلتا السلسلتين على رموز. ضع في اعتبارك أن مقارنة السلسلة يمكن أن تكون حساسة لحالة الأحرف، أو قد تكون غير متأكد من التهجئة أو لديك عدة تهجئات متشابهة.
  2. Regular expressions - لتحديد تعبير عادي للعثور على تطابقات السلسلة الدقيقة واستبدالها وفقا لتعبيرك العادي. لاحظ أنه يتم تعريف الكلمة على أنها تتكون من أحرف أبجدية رقمية فقط. إذا تم تنفيذ بديل مع مطابقة كلمات كاملة فقط وكانت سلسلة الإدخال تحتوي على رموز، فلن يتم العثور على عبارات.

بالإضافة إلى ذلك، يمكنك استخدام أحرف أولية خاصة مع استبدال سلسلة بسيط وتعبيرات عادية لتحديد الفواصل داخل عملية البحث والاستبدال.

Aspose.Words يعرض وظيفة البحث والاستبدال بمساحة الاسم Aspose.Words.Replacing. يمكنك العمل مع العديد من الخيارات أثناء عملية البحث والاستبدال باستخدام فئة FindReplaceOptions.

البحث عن النص واستبداله باستخدام استبدال سلسلة بسيطة

يمكنك استخدام إحدى طرق Replace للعثور على سلسلة معينة أو استبدالها وإرجاع عدد عمليات الاستبدال التي تم إجراؤها. في هذه الحالة، يمكنك تحديد سلسلة ليتم استبدالها، سلسلة من شأنها أن تحل محل جميع تكرارها، ما إذا كان الاستبدال حساس لحالة الأحرف، وما إذا كانت الكلمات المستقلة فقط ستتأثر.

يوضح مثال الكود التالي كيفية العثور على السلسلة “_ CustomerName_ " واستبدالها بالسلسلة *“James Bond”*:

يمكنك ملاحظة الفرق بين المستند قبل تطبيق استبدال سلسلة بسيطة:

before-simple-string-replacement-aspose-words-cpp

وبعد تطبيق استبدال سلسلة بسيطة:

after-simple-string-replacement-aspose-words-cpp

ابحث عن النص واستبدله باستخدام التعبيرات العادية

التعبير العادي (التعبير العادي) هو نمط يصف تسلسلا معينا من النص. لنفترض أنك تريد استبدال جميع التكرارات المزدوجة للكلمة بحدوث كلمة واحدة. ثم يمكنك تطبيق التعبير العادي التالي لتحديد نمط الكلمة المزدوجة: ([a-zA-Z]+) \1.

استخدم طريقة Replace الأخرى للبحث عن مجموعات أحرف معينة واستبدالها عن طريق تعيين المعلمة Regex كنمط تعبير عادي للعثور على التطابقات.

يوضح مثال التعليمات البرمجية التالية كيفية استبدال السلاسل التي تطابق نمط تعبير عادي مع سلسلة استبدال محددة:

يمكنك ملاحظة الفرق بين المستند قبل تطبيق استبدال السلسلة بالتعبيرات العادية:

before-replacement-with-regular-expressions-aspose-words-cpp

وبعد تطبيق استبدال السلسلة بالتعبيرات العادية:

after-replacement-with-regular-expressions-aspose-words-cpp

ابحث عن السلسلة واستبدلها باستخدام الأحرف الأولية

يمكنك استخدام الأحرف الأولية في سلسلة البحث أو سلسلة الاستبدال إذا كان نص أو عبارة معينة تتكون من فقرات أو أقسام أو صفحات متعددة. تتضمن بعض الأحرف الأولية &p لكسر فقرة، &b لكسر مقطع، &m لكسر صفحة، و &l لكسر سطر.

يوضح مثال التعليمات البرمجية التالية كيفية استبدال النص بالفقرة وفاصل الصفحة:

يمكنك العثور على النص واستبداله في قسم الرأس / التذييل في مستند ورد باستخدام فئة HeaderFooter.

يوضح مثال الكود التالي كيفية استبدال نص قسم الرأس في المستند:

يمكنك ملاحظة الفرق بين المستند قبل تطبيق استبدال سلسلة الرأس:

before-applying-header-string-replacement-aspose-words-cpp

وبعد تطبيق استبدال سلسلة الرأس:

after-applying-header-string-replacement-aspose-words-cpp

مثال التعليمات البرمجية لاستبدال نص قسم التذييل في المستند مشابه جدا لمثال رمز الرأس السابق. كل ما عليك فعله هو استبدال الخطين التاليين:

auto header = headersFooters->idx_get(HeaderFooterType::HeaderPrimary);
header->get_Range()->Replace(u"Aspose.Words", u"Remove", options);

مع ما يلي:

auto footer = headersFooters->idx_get(HeaderFooterType::FooterPrimary);
footer->get_Range()->Replace(u"(C) 2006 Aspose Pty Ltd.", u"Copyright (C) Aspose Pty Ltd.", options);

يمكنك ملاحظة الفرق بين المستند قبل تطبيق استبدال سلسلة التذييل:

before-applying-footer-string-replacement-aspose-words-cpp

وبعد تطبيق استبدال سلسلة تذييل الصفحة:

after-applying-footer-string-replacement-aspose-words-cpp

تجاهل النص أثناء البحث والاستبدال

أثناء تطبيق عملية البحث والاستبدال، يمكنك تجاهل أجزاء معينة من النص. لذلك، يمكن استبعاد أجزاء معينة من النص من البحث، ويمكن تطبيق البحث والاستبدال فقط على الأجزاء المتبقية.

Aspose.Words يوفر العديد من خصائص البحث والاستبدال لتجاهل النص مثل IgnoreDeleted, IgnoreFieldCodes, IgnoreFields, IgnoreFootnotes, و IgnoreInserted.

يوضح مثال الكود التالي كيفية تجاهل النص داخل حذف المراجعات:

تخصيص البحث واستبدال العملية

Aspose.Words يوفر العديد من properties مختلفة لإيجاد واستبدال النص مثل تطبيق شكل معين مع ApplyFont و ApplyParagraphFormats الخصائص، وذلك باستخدام بدائل في أنماط استبدال مع UseSubstitutions الملكية، وغيرها.

يوضح مثال الكود التالي كيفية تمييز كلمة معينة في المستند:

Aspose.Words يسمح لك باستخدام IReplacingCallback واجهة لإنشاء واستدعاء طريقة مخصصة أثناء عملية استبدال. قد يكون لديك بعض حالات الاستخدام حيث تحتاج إلى تخصيص عملية البحث والاستبدال مثل استبدال النص المحدد بتعبير عادي بعلامات HTML، لذلك ستطبق بشكل أساسي استبدال بإدراج HTML.

إذا كنت بحاجة إلى استبدال سلسلة بعلامة HTML، فقم بتطبيق واجهة IReplacingCallback لتخصيص عملية البحث والاستبدال بحيث تبدأ المطابقة في بداية التشغيل باستخدام عقدة المطابقة في المستند. دعونا نقدم عدة أمثلة على استخدام IReplacingCallback.

يوضح مثال الكود التالي كيفية استبدال النص المحدد بـ HTML:

يوضح مثال الكود التالي كيفية تمييز الأرقام الموجبة باللون الأخضر والأرقام السالبة باللون الأحمر:

يوضح مثال التعليمات البرمجية التالية كيفية إضافة رقم سطر إلى كل سطر: