【问题标题】:Find and Replace in a loop in Google Docs App Script在 Google Docs 应用脚本中循环查找和替换
【发布时间】:2018-02-24 21:28:09
【问题描述】:

我经常撰写研究论文,要求在文中引用括号中的数字 - 例如:“这是一个引用 [1]。”

当我写论文时,我使用字母而不是数字,以便我以后可以查找和替换,因为我可能会在这里和那里添加引用,我不想为每个引用重新编号以保留它们按顺序排列。

如何循环搜索整个 Google 文档,并将每个字母替换为数字?例如。将[a] 替换为[1],将[b] 替换为[2] 等。我尝试了此代码,但它用括号中的随机数替换了文档中的每个字符。我不清楚转义括号的规则,所以我也试过在每个括号前加上\

function myFunction() {

    var doc = DocumentApp.getActiveDocument();
    body = doc.getBody();

     var alphabet = ["[a]", "[b]", "[c]", "[d]", "[e]", "[f]", "[g]", "[h]", "[i]", "[j]", "[k]", "[l]", "[m]", "[n]", "[o]", "[p]", "[q]", "[r]", "[s]", "[t]", "[u]", "[v]", "[w]", "[x]", "[y]", "[z]", "[aa]", "[bb]", "[cc]", "[dd]", "[ee]", "[ff]", "[gg]", "[hh]", "[ii]", "[jj]", "[kk]", "[ll]", "[mm]", "[nn]", "[oo]", "[pp]", "[qq]", "[rr]", "[ss]", "[tt]", "[uu]", "[vv]", "[ww]", "[xx]", "[yy]", "[zz]"]; 
      
      for (i = 0; i < alphabet.length; i++) { 
       num = i+1;
       newText = "["+num+"]";
    
    body.replaceText(alphabet[i], newText);
    }
}

【问题讨论】:

  • 对于任何注意到将 [a] 替换为 [1] 等文档的人没有意义,我应该指出,在研究完成后,我将重新排列'alphabet' 数组基于我论文中出现的字母顺序。

标签: replace google-apps-script google-docs


【解决方案1】:

看起来您需要对括号进行双重转义:

function testReplace(){
  var doc = DocumentApp.getActiveDocument();
  body = doc.getBody();


  var alphabet = ["\\[a\\]", "\\[b\\]", "[c]"]; // c is a test-case


  for (i = 0; i < alphabet.length; i++) { 
    num = i+1;
    newText = "["+num+"]";

    body.replaceText(alphabet[i], newText);
  }
}

之前:

A a [a]

B b [b]

C c [c]

之后:

A a [1]

B b [2]

C [3] [[3]]

【讨论】:

    【解决方案2】:

    .replaceText 方法使用正则表达式进行匹配,因此您需要将搜索结构更改为:

    body.replaceText("\[" + alphabet[i] + "\]", num + "]")
    

    这将替换文档中括号内的每个实例。

    【讨论】:

      【解决方案3】:

      Paperpile.com 与谷歌文档集成,将为您完成这一切。

      【讨论】:

        【解决方案4】:

        您是否考虑过使用空括号,然后在完成后放置数字?

        例如这是一个引用[]。

        写完论文后,使用 Find & Replace 并搜索“[]”,然后添加数字。使用查找和替换将确保您不会意外遗漏任何括号。

        如果您不想使用查找和替换,空括号是否可以帮助您使用 Apps 脚本更轻松地对其进行编号?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-26
          • 1970-01-01
          • 1970-01-01
          • 2021-02-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多