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

JavaScript字符串操作求助:按指定长度找词并替换后续两词

解决方案

先修正输入验证逻辑,再通过数组索引定位目标单词,最后利用数组splice方法完成插入和删除操作,具体代码如下:

let spliceText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ornare mauris eget tortor accumsan posuere. Mauris pharetra pellentesque libero, ut cursus eros consectetur nec. Suspendisse id erat vitae tellus cursus rutrum ut sit amet nisi. Aliquam cursus ultrices nisl in vestibulum. Nunc lacinia metus a venenatis pretium. Nullam vitae tincidunt ante. Duis posuere, dolor ac accumsan consequat, ex mi congue sem, sit amet fringilla tellus velit at neque. Donec luctus mi eu ligula volutpat semper. Maecenas vulputate bibendum velit, at finibus velit consectetur sed. Maecenas commodo feugiat lorem, vitae eleifend velit iaculis ut. Duis ac suscipit nisl. Sed vel metus.";

// 移除标点并分割为单词数组
let words = spliceText.replaceAll(".", "").replaceAll(",", "").split(' ');

// 输入验证:确保是正整数
let length;
while (true) {
  length = parseInt(prompt("Specify the word's length:"));
  if (!isNaN(length) && length > 0) break;
  alert("请输入有效的正整数!");
}

// 找到第一个长度匹配的单词的索引
let targetIndex = words.findIndex(word => word.length === length);

if (targetIndex === -1) {
  alert("未找到对应长度的单词");
} else {
  // 确保目标单词后至少有两个单词,避免操作报错
  if (targetIndex + 2 >= words.length) {
    alert("目标单词后不足两个单词,无法完成操作");
  } else {
    const targetWord = words[targetIndex];
    // 从目标单词的下一个位置开始,删除2个单词并插入目标单词副本
    words.splice(targetIndex + 1, 2, targetWord);
    
    // 将数组重新拼接为字符串
    const result = words.join(' ');
    console.log(result);
    alert("处理后的文本:\n" + result);
  }
}

关键逻辑说明

  • 输入验证:用循环强制用户输入有效正整数,避免无效值破坏后续逻辑。
  • 目标定位:使用findIndex直接获取第一个匹配长度的单词索引,比filter更高效,找到匹配项即停止遍历。
  • 数组操作:splice(targetIndex + 1, 2, targetWord)实现核心需求:删除目标单词后两个元素,插入目标单词副本,最终数组长度减少1,且两个目标单词相邻。同时增加边界判断,防止因单词数量不足导致报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:31:02