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

如何使用原生JavaScript基于数组替换字符串中的指定内容?

实现数组多关键词批量替换功能

方法1:循环遍历数组逐个替换

基于你现有的replaceAll函数,新增一个接收搜索词数组的函数,通过循环遍历数组内每个关键词,依次完成替换:

let x = document.querySelector("form.form").elements;
let input = x["formName"].value;

// 原单关键词替换函数
function replaceAll(string, search, replace) {
  return string.split(search).join(replace);
}

// 新增多关键词替换函数
function replaceAllFromArray(string, searchArray, replace) {
  let result = string;
  // 遍历搜索数组,逐个执行替换
  for (const searchWord of searchArray) {
    result = replaceAll(result, searchWord, replace);
  }
  return result;
}

// 使用示例:替换数组内所有关键词为"-"
const stopWords = ["example", "test", "demo"];
let noStop = replaceAllFromArray(input, stopWords, "-");

方法2:正则表达式批量替换(更高效)

如果搜索词数量较多,用正则一次性匹配所有关键词能提升性能。注意要转义搜索词中的正则特殊字符(如.、*、+等),避免匹配异常:

let x = document.querySelector("form.form").elements;
let input = x["formName"].value;

// 转义正则特殊字符的辅助函数
function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

// 多关键词替换函数
function replaceAllFromArray(string, searchArray, replace) {
  // 将数组转为正则匹配串,开启全局匹配
  const regexPattern = new RegExp(searchArray.map(escapeRegExp).join('|'), 'g');
  return string.replace(regexPattern, replace);
}

// 使用示例
const stopWords = ["example", "test", "demo"];
let noStop = replaceAllFromArray(input, stopWords, "-");

补充说明

  • 方法1逻辑简单,无需处理正则转义,适合关键词无特殊字符的场景。
  • 方法2仅需一次字符串遍历,性能更优,同时通过转义函数适配含特殊字符的关键词场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:50:39