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

JavaScript字符串替换故障排查:用指定字符替换点分隔符

问题描述
  • 需求:第一行输入字符组合d,第二行输入以点分隔的单词序列,需将这些单词以d作为分隔符输出。
  • 示例:
    • 输入d= /|
    • 输入单词序列:dej.fow.orj.jkk.fgo.pwk.pkp.lde.efe
    • 预期输出:dej/|\fow/|\orj/|\jkk/|\fgo/|\pwk/|\pkp/|\lde/|\efe
  • 问题:以下JavaScript代码无法正常运行,请求排查修复:
let d=prompt();
let b=prompt();
let arr=b.split('');
for(let i in arr) {
    if(i.indexOf('.') !== -1){
        arr = i.replace(i.indexOf('.'), d)
  }
}
arr = arr.join()
console.log(arr)
代码修复方案

原代码问题分析

  1. 遍历对象错误:用for...in遍历数组时,i是数组的索引(字符串类型的数字,比如"0""1"),不是数组中的字符,所以i.indexOf('.')永远返回-1,根本不会进入替换逻辑。
  2. 数组被错误覆盖:就算进入替换逻辑,arr = i.replace(...)会直接把数组替换成一个字符串,后续循环完全失效。
  3. join方法无参数:最后arr.join()默认用逗号连接元素,不符合输出要求。

修复后的代码(最优解)

const d = prompt();
const wordStr = prompt();
const result = wordStr.split('.').join(d);
console.log(result);

代码解释

  • split('.'):直接把输入的单词序列按点分割成单词数组,比如输入dej.fow.orj会变成['dej', 'fow', 'orj']。
  • join(d):用指定的分隔符d把单词数组重新拼接成字符串,正好满足需求。

若保留遍历字符的思路(不推荐,效率较低)

如果一定要通过遍历字符实现,代码可修改为:

const d = prompt();
const wordStr = prompt();
const arr = wordStr.split('');
for (let i = 0; i < arr.length; i++) {
    if (arr[i] === '.') {
        arr[i] = d;
    }
}
const result = arr.join('');
console.log(result);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:15:09