You need to enable JavaScript to run this app. JavaScript实现字符按重复规则替换代码不生效问题求助
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript实现字符按重复规则替换代码不生效问题求助

问题原因定位

  • 第一,正则表达式写法错误:你写的/word[i]/gi是把word[i]当作固定字符串字面量处理,不会解析成变量对应的值,所以replace方法全程匹配不到任何字符,自然不会修改原字符串,这是你得到原输入的直接原因。
  • 第二,循环逻辑错误:双重循环过程中每次比对单个j就直接替换全局字符,哪怕后续存在重复字符也会被前面的判断覆盖,而且你在循环中修改了原字符串word,后续遍历的是修改后的内容,统计重复的逻辑完全失效。
  • 第三,判断时机错误:应该先全局统计所有字符的出现次数,再统一替换,而不是边遍历边修改。

修复方案

首先先统计每个字符的出现频次,再遍历原字符串按规则替换,示例代码如下:

function duplicateEncode(word){
  // 统一转小写,匹配原代码的gi忽略大小写逻辑
  const lowerWord = word.toLowerCase();
  // 统计字符出现次数
  const countMap = {};
  for (let char of lowerWord) {
    countMap[char] = (countMap[char] || 0) + 1;
  }
  // 按规则替换
  return lowerWord.split('').map(char => {
    return countMap[char] === 1 ? '(' : ')';
  }).join('');
}

如果你一定要用正则动态匹配的写法,需要用RegExp构造函数来传入变量生成正则,比如new RegExp(word[i], 'gi'),但依然不推荐边遍历边修改原字符串的逻辑,很容易出现索引错乱问题。

内容的提问来源于stack exchange,提问作者IG-_-

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 04:15:03