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

如何用JavaScript反转字符串但保留大括号{}内的字符?

解决方案

要实现「反转整个字符串但保留大括号内内容不变」的需求,核心是区分大括号内外的片段,分别处理后再组合。具体思路如下:

  1. 拆分字符串:把原字符串拆分为两类片段——普通字符段和完整的{xxx}大括号段,比如"ab{cd}ef{gh}i"会被拆成["ab", "{cd}", "ef", "{gh}", "i"]
  2. 处理单个片段:对普通字符段进行反转,大括号段直接保留原样
  3. 重组字符串:把处理后的片段数组整体反转,再拼接成最终结果

对应的JavaScript代码实现:

function reverseChar(string2) {
  // 用正则拆分字符串,匹配大括号段或非大括号段
  const tokens = string2.match(/(\{.*?\}|[^{}]+)/g) || [];
  
  // 处理每个片段:普通段反转,大括号段保持不变
  const processedTokens = tokens.map(token => {
    if (token.startsWith('{') && token.endsWith('}')) {
      return token;
    }
    return token.split('').reverse().join('');
  });
  
  // 反转片段数组后拼接,得到最终结果
  const result = processedTokens.reverse().join('');
  console.log(result);
  return result;
}

// 测试用例
reverseChar("ab{cd}efg"); // 输出: "gfe{cd}ba"
reverseChar("ab{cd}ef{gh}i"); // 输出: "i{gh}fe{cd}ba"

代码说明

  • 正则/(\{.*?\}|[^{}]+)/g采用非贪婪匹配.*?,确保只会匹配到最近的闭合大括号,避免嵌套大括号(如果有)的匹配问题
  • 先处理单个普通片段的反转,再整体反转片段数组,这样既保证了整个字符串的反转逻辑,又保留了大括号内的内容顺序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:50:28