Как заменить перевод строки или мягкого перевода строки (ctrl + enter) в скрипте приложения Google Doc? - PullRequest
1 голос
/ 16 мая 2019

У меня есть рабочий шаблон (Google Doc) и у меня есть переменные со следующими шаблонами, которые нужно заменить значениями

{{BASIC SALARY_.Description}}
{{}} OT1.5.Description
{{MEL ALW. Описание}}
{{OST ALW.Description}}
{{TRV ALW. Описание}}
{{ADV SAL.Description}}

примечание: Я использую программный разрыв строки (ctrl + enter) в Google Doc, так как я не смог определить нормальный шаблон разрыва строки "\ n", "\ n", "\ r \ n ", но мой результат всегда странный, так как некоторые строки нужно заменить на правильные описания, но некоторые нужно полностью обнулить (удалите весь {{pattern}} вместе с разрывом строки, чтобы избежать пустой строки)

Я опробовал несколько шаблонов REGEX, погуглил на онлайн форуме https://github.com/google/re2/wiki/Syntax
Устранить новые строки в скрипте приложения Google, используя регулярные выражения
Использование RegEx в скрипте Google Doc Apps для замены текста

и выяснить, что только мягкий разрыв строки - единственный способ справиться (определите шаблон \ v . Пожалуйста, проверьте мой пример кода, поскольку замена шаблона не работает должным образом.

// code block 1
var doc = DocumentApp.openById(flPayslip.getId());
var body = doc.getBody();
body.replaceText("{{BASIC SALARY_.Description}}", "Basic Salary");
body.replaceText("{{OST ALW.Description}}", "Outstation Allowance");
// code block 2
var doc = DocumentApp.openById(flPayslip.getId());
var body = doc.getBody();
body.replaceText("{{BASIC SALARY_.Description}}", "Basic Salary");
body.replaceText("{{OST ALW.Description}}", "Outstation Allowance");
body.replaceText("{{.*}}\\v+", "");  // to replace soft linebreak

Фактический результат блока кода 1

Базовая зарплата
{{}} OT1.5.Description
{{MEL ALW. Описание}}
Пособие по аутсорсингу
{{TRV ALW. Описание}}
{{ADV SAL.Description}}

Фактический результат блока кода 2:

Базовая зарплата

Ошибка: фактический результат "Разрешение на аутсорсинг" был удален из замены регулярных выражений.

Ожидаемый результат

Базовая зарплата
Пособие по аутсорсингу

Какой правильный шаблон регулярных выражений мне следует использовать в моем коде?

1 Ответ

2 голосов
/ 16 мая 2019

Попробуйте

body.replaceText("{{[^\\v]*?}}\\v+", "");  // No \v inside `{{}}` and  not greedy`?`

Когда вы используете {{.*}}, .* соответствует всему между первым {{ и последним }}

Базовая зарплата
{{

OT1.5. Описание}}
{{MEL ALW.Description}}
Допуск на аутсорсинг
{{TRV ALW.Description}}
{{ADV SAL. Описание

}}

...