我经常撰写研究论文,要求将文本引文作为括号中的数字 - 例如:“这是引用[1]。”
当我写论文时,我使用字母而不是数字,所以我可以找到&以后更换,因为我可能会在这里和那里添加引用,我不想重新编号每个引用以保持它们的顺序。
如何在循环中搜索整个Google文档,并用数字替换每个字母?例如;将[a]替换为[1],将[b]替换为[2] ..等。我尝试了这段代码,但它用括号中的随机数替换了doc中的每个字符。我不清楚转义括号的规则,所以我也在每个括号之前尝试了一个\。谢谢!
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);
}
}
答案 0 :(得分: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]]
答案 1 :(得分:0)
.replaceText
方法使用正则表达式匹配,因此您需要将搜索结构更改为:
body.replaceText("\[" + alphabet[i] + "\]", num + "]")
这将替换文档中每个括号内的注释。
答案 2 :(得分:0)
Paperpile.com与google docs集成,并将为您完成所有这一切。
答案 3 :(得分:0)
您是否考虑过使用空括号,然后在完成后放置数字?
例如这是引用[]。
写完论文后,使用查找和替换并搜索“[]”,然后添加数字。使用“查找和替换”将确保您不会意外遗漏任何括号。
如果您不想使用“查找和替换”,空括号是否可以帮助您使用 Apps 脚本更轻松地对其进行编号?