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

App Script中String.replace(/\s/g,'')处理含空格分隔%的字符串异常

问题原因与修复方案

原因分析

Google Apps Script的String.replace()方法在处理仅由%和空格组成的字符串时存在边缘案例bug:当替换空格为空字符串后,原本的多个%会被错误合并为一个。该bug仅在纯%+空格的场景下触发,包含普通字符的混合场景不受影响。

修复方案

以下几种方法均可绕过该异常行为:

方案1:用split() + join()替代replace()

通过拆分再拼接的方式彻底避开replace()的异常逻辑:

function cleanSpaces(string){
  return string.split(/\s/).join('');
}

方案2:使用replaceAll()方法

GAS已支持ES6的replaceAll(),该方法不存在上述bug,可直接替换所有空白字符:

function cleanSpaces(string){
  // 替换所有空白字符(含制表符、换行等)
  return string.replaceAll(/\s/g, '');
  // 若仅需替换空格字符,可简化为:
  // return string.replaceAll(' ', '');
}

方案3:手动修复特殊场景(不推荐)

如果因兼容性限制无法使用replaceAll(),可在replace()后针对纯%的情况做补全:

function cleanSpaces(string){
  const cleaned = string.replace(/\s/g, '');
  // 检查是否是被错误合并的纯%字符串,修复长度
  if (/^%+$/.test(cleaned)) {
    const originalPercentCount = string.split('%').length - 1;
    return '%'.repeat(originalPercentCount);
  }
  return cleaned;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 19:33:15