Google Apps Script - replaceText - не может заменить точку, запятую и знак вопроса - PullRequest
3 голосов
/ 14 января 2020

Я пытаюсь написать скрипт приложения Google, который найдет и заменит указанные c слова на другие в документах Google ...

Я хотел бы "привет" (пробел, привет, пробел) должен быть заменен на «R1» (пробел, R1, пробел). И если после приветствия есть какой-либо знак пунктуации, такой как точка, запятая или вопросительный знак, это должен быть тот же лог c:

  • " hello " для замены на " R1 "
  • " hello. " для замены на " R1. "
  • " hello, " для замены на " R1, "
  • " hello? " должен быть заменен на " R1? "

Поэтому я использовал следующее:

function docReplace() {
  var body = DocumentApp.getActiveDocument().getBody();
  body.replaceText(" hello ", " R1 ");
  body.replaceText(" hello. ", " R1. ");
  body.replaceText(" hello, ", " R1, ");
  body.replaceText(" hello? ", " R1? ");
}

К сожалению, это не работает, как "." , "," а также "?" являются регулярными символами.

Затем я попробовал это:

function docReplace() {
  var body = DocumentApp.getActiveDocument().getBody();
  body.replaceText(" hello ", " R1 ");
  body.replaceText(" hello\. ", " R1. ");
  body.replaceText(" hello\, ", " R1, ");
  body.replaceText(" hello\? ", " R1? ");
}

Но все равно не работает. Запятые и вопросительные знаки возвращаются как точки.

Буду признателен, если кто-нибудь сможет помочь с правильным кодом.

1 Ответ

2 голосов
/ 14 января 2020
  • Вы хотите выполнить следующую замену с помощью Google Apps Script. В этом примере ## использовался в качестве разделителя значений.

    • С

      ## hello ##
      ## hello. ##
      ## hello, ##
      ## hello? ##
      
    • К

      ## R1 ##
      ## R1. ##
      ## R1, ##
      ## R1? ##
      

Если мое понимание верно, как насчет этой модификации? В этой модификации \., \, и \? изменены на \\., \\, и \\?, соответственно.

Модифицированный скрипт:

function docReplace() {
  var body = DocumentApp.getActiveDocument().getBody();
  body.replaceText(" hello ", " R1 ");  // Modified
  body.replaceText(" hello\\. ", " R1. ");  // Modified
  body.replaceText(" hello\\, ", " R1, ");  // Modified
  body.replaceText(" hello\\? ", " R1? ");  // Modified
}

Ссылка:

Если я неправильно понял ваш вопрос, и это был не тот результат, который вы хотите, я приношу свои извинения.

...