如何使用Text对象检查%字符前后是否为空格并修正文档格式
检查并格式化%前后的空格(使用Google Apps Script Text对象)
要实现检查%前后是否为空格并将x%y调整为x % y,可以通过以下代码完成,同时支持处理段落中所有的%:
function formatPercentSpacing() { try { const doc = DocumentApp.getActiveDocument(); const body = doc.getBody(); const paragraph = body.getParagraphs()[0]; const text = paragraph.editAsText(); let fullText = text.getText(); let range = text.findText("%"); while (range) { const percentOffset = range.getStartOffset(); // 获取%前后的字符 const prevChar = percentOffset > 0 ? fullText.charAt(percentOffset - 1) : ""; const nextChar = percentOffset < fullText.length - 1 ? fullText.charAt(percentOffset + 1) : ""; // 处理前方空格:如果没有则插入 if (prevChar !== " ") { text.insertText(percentOffset, " "); // 插入后更新文本内容,重新定位下一个% fullText = text.getText(); range = text.findText("%", range); continue; } // 处理后方空格:如果没有则插入 if (nextChar !== " ") { text.insertText(percentOffset + 1, " "); fullText = text.getText(); } // 定位下一个% range = text.findText("%", range); } } catch (err) { console.log(err); } }
关键步骤说明
- 批量处理所有%:用
while循环遍历段落中所有的%,避免只处理第一个匹配项 - 字符检查逻辑:
- 通过
range.getStartOffset()获取%在文本中的索引位置 - 用
charAt()获取前后字符,同时处理%在段落开头/结尾的边界情况
- 通过
- 偏移量修正:插入空格后,文本长度会变化,需要重新获取最新的文本内容,并更新
range的定位,避免后续匹配出错
针对你的测试场景
当段落内容为x%y时,代码会:
- 找到
%的索引为1 - 检查前一个字符是
x(非空格),在索引1处插入空格,文本变为x %y - 重新定位
%的索引变为2,检查后一个字符是y(非空格),在索引3处插入空格,最终文本变为x % y
内容的提问来源于stack exchange,提问作者TheWizEd
相关产品推荐
相关产品推荐

