【发布时间】:2020-03-04 07:19:55
【问题描述】:
我希望段落最多只有 3 个句子。
为此,我的策略是循环所有段落并找到第三句结尾(见注释)。然后,在其后添加一个“\r”字符。
这是我的代码:
for (var i = 1; i < paragraphs.length; i++) {
...
sentEnds = paragraphs[i].getText().match(/[a-zA-Z0-9_\u0590-\u05fe][.?!](\s|$)|[.?!][.?!](\s|$)/g);
//this array is used to count sentences in Hebrew/English/digits that end with 1 or more of either ".","?" or "!"
...
if ((sentEnds != null) && (sentEnds.length > 3)) {
lineBreakAnchor = paragraphs[i].getText().match(/.{10}[.?!](\s)/g);
paragraphs[i].replaceText(lineBreakAnchor[2],lineBreakAnchor[2] + "\r");
}
}
这适用于第 1 轮。但如果我再次运行代码 - 插入的“\r”字符后的文本不会被识别为新段落。因此,每次脚本运行时都会插入更多的“\r”(新行)。
如何让脚本“理解”“\r”表示新的、单独的段落?
或
还有其他角色/方法可以解决问题吗?
谢谢。
- 注意:我使用句子的最后 10 个字符,假设匹配的唯一性足以进行 1 次替换。
【问题讨论】:
-
试试
\n,看看实际文档中是否有\n。 -
这不会改变所描述的行为
-
您看到文档中是否有
\n吗?尝试使用正则表达式查找和替换菜单 -
我做到了。
\n在任何段落末尾都有一个匹配项。但是 - 即使我有脚本添加\n- 在搜索中也没有检测到这些...... -
尝试insertParagraph 和getChildIdx 获取要插入的正确索引
标签: regex google-apps-script google-docs