تقنية

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


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

إليك عينة رمز بسيطة تحل محل الحدوث الأول لـ “GSUITE” مع “مساحة عمل Google” في مستند 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. وتشمل هذه الشخصيات مثل الواصلة أو الأقواس أو علامات الاستفهام أو الرمز Plus.

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

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


اكتشاف المزيد من مربى سبورت - أخبار وتحليلات كرة القدم

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

اترك تعليقاً

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

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

اكتشاف المزيد من مربى سبورت - أخبار وتحليلات كرة القدم

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

متابعة القراءة