تقنية

كيفية البحث عن النص واستبداله في مستندات Google باستخدام أنماط بحث RegEx


من السهل البحث عن النص واستبداله في مستندات Google باستخدام DocumentApp خدمة Google Apps Script. يمكنك استخدام الاستخدام findText طريقة مع تعبيرات عادية بسيطة للعثور على عناصر النص في المستند التي تتطابق مع النمط واستبدالها بالنص المحدد.

فيما يلي نموذج تعليمات برمجية بسيط يستبدل التواجد الأول لـ “GSuite” بـ “Google Workspace” في مستند Google النشط.

const searchAndReplaceInGoogleDocs = () => {
  const searchText = 'GSuite';
  const replaceText = 'Google Workspace';

  const document = DocumentApp.getActiveDocument();
  const documentBody = document.getBody();

  const searchResult = documentBody.findText(searchText);

  if (searchResult !== null) {
    const startIndex = searchResult.getStartOffset();
    const endIndex = searchResult.getEndOffsetInclusive();
    const textElement = searchResult.getElement().asText();
    textElement.deleteText(startIndex, endIndex);
    textElement.insertText(startIndex, replaceText);
  }

  document.saveAndClose();
};

كل شيء جيد وجيد، ولكن في بعض الحالات، قد تفشل وظيفة البحث والاستبدال البسيطة هذه إذا لم يتحول نص البحث إلى تعبير عادي صالح.

على سبيل المثال، إذا كان لديك كتلة نصية مثل Hello (World في المستند (لاحظ القوس المفتوح الإضافي) الذي تريد استبداله Hello World، سيفشل المقتطف أعلاه مع ظهور رسالة خطأ تقول Exception: Invalid regular expression pattern.

للتغلب على المشكلة، من الجيد استبدال كافة الأحرف الخاصة في نمط البحث التي لها معنى خاص في عالم RegEx. يتضمن ذلك أحرفًا مثل الواصلة أو الأقواس أو علامات الاستفهام أو رمز الزائد.

ستصبح وظيفة البحث والاستبدال المعدلة لدينا بعد ذلك:

const escapeRegex = (str) => str.replace(/[-[\]/{}()*+?.\\^$|#]/g, '\\$&');

const searchAndReplaceInGoogleDocs = () => {
  const searchText = 'Hello (World';
  const replaceText = 'Hello World';

  const document = DocumentApp.getActiveDocument();
  const documentBody = document.getBody();

  const searchResult = documentBody.findText(escapeRegex(searchText));

  if (searchResult !== null) {
    const startIndex = searchResult.getStartOffset();
    const endIndex = searchResult.getEndOffsetInclusive();
    const textElement = searchResult.getElement().asText();
    textElement.deleteText(startIndex, endIndex);
    textElement.insertText(startIndex, replaceText);
  }

  document.saveAndClose();
};



Source link


اكتشاف المزيد من مرابع التكنولوجيا

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى

اكتشاف المزيد من مرابع التكنولوجيا

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading