2015-06-25 4 views
-2

Я создаю функцию типа слияния в скриптах google docs. Я решил использовать квадратные скобки для разграничения полей. Я заметил, что replaceText делает странные вещи при сопоставлении строк с квадратными скобками, о чем свидетельствует следующая тестовая функция.replaceText с квадратными скобками в скрипте google

function testReplace() 
{ 
    var outputDoc = DocumentApp.create("testReplace"); 
    outputDoc.appendParagraph('Hello [World]'); 
    var body = outputDoc.getActiveSection(); 
    body.replaceText('[World]', 'There'); 
    // Document content: 
    // HeThereThereThere [ThereThereThereThereThere] 
    // I would have expected: 
    // Hello There 
} 

Может кто-нибудь объяснить, что происходит? Заранее спасибо.

ответ

0

Вы замены каждого вхождения 'W', 'о', 'R', 'L', или 'D' с 'Там'

[хуг] совпадает с 'х', 'у' , или 'z', а не 'xyz'.

Вам необходимо избегать квадратных скобок. Попробуйте "\ [World \]"

Here's an answer with a basic primer on how to use regular expressions

+0

Спасибо за установление меня прямо на этом. –

+0

@ starry.au Я рад, что смог помочь – StephenTG

+0

Спасибо за объяснение, я не понял, что этот параметр был регулярным выражением, я вижу, как формируется вывод, что именно так интерпретируется параметр. Однако, когда я включил строку с экранированным совпадением "\ [WORLD \]", я получаю тот же результат. Можете ли вы рекомендовать альтернативный способ избежать скобок. –

Смежные вопросы