You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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. 找到%的索引为1
  2. 检查前一个字符是x(非空格),在索引1处插入空格,文本变为x %y
  3. 重新定位%的索引变为2,检查后一个字符是y(非空格),在索引3处插入空格,最终文本变为x % y

内容的提问来源于stack exchange,提问作者TheWizEd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 21:12:58