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

如何实现含单双括号的字符串替换与转义处理?

字符串替换与双括号转义实现方案

先直接给出完整的实现代码,再拆解说明:

function replaceValue(input, replacementValue) {
  let copied = input;

  // 替换所有单括号包裹的变量
  Object.keys(replacementValue).forEach(key => {
    // 用正则全局匹配,替换所有出现的[key]
    copied = copied.replace(new RegExp(`\\[${key}\\]`, 'g'), replacementValue[key]);
  });

  // 处理双括号转义:移除外层括号
  copied = copied.replace(/\[\[(.*?)\]\]/g, '[$1]');

  return copied;
}

关键修改说明

  1. 完善单括号替换逻辑
    你原来的代码仅替换第一个匹配的[key],改成正则全局匹配(g标志)后,能处理同一个变量多次出现的场景。比如输入'[condition] is [condition]',会被全部替换为'clear is clear'。

  2. 双括号转义实现
    使用正则/\[\[(.*?)\]\]/g:

    • \[\[ 和 \]\] 用来匹配字面量的[[和]](括号在正则中是特殊字符,需转义)
    • (.*?) 是非贪婪模式的捕获组,精准匹配双括号内部的内容,避免把[[a]][[b]]误匹配成整体内容
    • 替换为[$1],即把捕获到的内部内容用单括号包裹,等效于移除外层的一对括号。

测试示例验证

运行你的测试用例:

expect(replaceValue('The sky is [condition] and the color is [[blue]]', {'condition':'clear'})).toBe('The sky is clear and the color is [blue]');

执行流程:

  • 第一步替换后:'The sky is clear and the color is [[blue]]'
  • 第二步转义后:'The sky is clear and the color is [blue]',完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:40:28