我编写了一个在docs中使用spinText同义词的函数。 IE浏览器。我在文档中有这样的文字:" {Hello | Hi} Mr {Thomas | Mathew | Andrew}"
函数给我2个数组:toreplace [],synonyms []但
的结果for (var i = 0; i < rangeElements.length; ++i) {
body.replaceText(toreplace[i],synonyms[i]);
}
给我一个这样的文字:嗨|嗨先生安德鲁|安德鲁|安德鲁但是我想得到&#34;嗨先生安德鲁&#34;。
我尝试了Logger.log(toreplace [0])并得到了#34; {Hello | Hi}&#34;和Logger.log(同义词[0])显示&#34;嗨&#34;所以它应该被翻译成body.replaceText(&#39; {Hello | Hi}&#39;,&#39;嗨&#39;);
我做错了什么?
function synonymize() {
var body = DocumentApp.getActiveDocument().getBody();
var rangeElements = [];
var rangeElement=null;
var start=[];
var end=[];
var lentabs=[];
var str;
var synonyms=[];
var toreplace=[];
var x=0;
while (rangeElement = body.findText('[{].+?[}]',rangeElement))
{
rangeElements.push(rangeElement);
start.push(rangeElement.getStartOffset());
end.push(rangeElement.getEndOffsetInclusive());
}
for (var i = 0; i < rangeElements.length; ++i) {
lentabs[i]=rangeElements[i].getElement().getText().substring(start[i]+1, end[i]).split('|').length
toreplace[i]=rangeElements[i].getElement().getText().substring(start[i], end[i]+1);
min=0;
max=lentabs[i]-1;
rand=Math.floor(Math.random()*(max-min+1)+min)
synonyms.push(rangeElements[i].getElement().getText().substring(start[i]+1, end[i]).split('|')[rand]);
}
for (var i = 0; i < rangeElements.length; ++i) {
body.replaceText(toreplace[i],synonyms[i]);
}
}
答案 0 :(得分:1)
确定。问题出在&#34; |&#34;被视为正则表达式。我将文档中的文本更改为&#34; {Hello#Hi} Mr {Thomas#Mathew#Andrew}&#34;现在它工作正常。