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

如何用JS将字符串中元音替换为*并生成所有可能结果数组

实现思路

你需要的结果本质是所有元音位置的非空替换组合:如果字符串有N个元音,就会生成2^N -1种结果,刚好对应你示例里3个元音得到7个结果的场景。核心用二进制位掩码来实现组合遍历,每个二进制位标识对应位置的元音是否需要替换为*。

完整实现代码

function getAllVowelReplacedVariants(str) {
  // 定义元音集合,需要区分/不区分大小写可自行调整规则
  const vowels = new Set(['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'])
  // 提取字符串中所有元音的下标位置
  const vowelIndexes = []
  for (let i = 0; i < str.length; i++) {
    if (vowels.has(str[i])) vowelIndexes.push(i)
  }
  const result = []
  const originArr = str.split('')
  // 遍历所有非空替换组合:掩码从1到2^n -1,排除全0的不替换场景
  for (let mask = 1; mask < (1 << vowelIndexes.length); mask++) {
    const tempArr = [...originArr]
    for (let i = 0; i < vowelIndexes.length; i++) {
      // 二进制当前位为1则替换对应位置的元音
      if (mask & (1 << i)) {
        tempArr[vowelIndexes[i]] = '*'
      }
    }
    result.push(tempArr.join(''))
  }
  return result
}

调用测试

console.log(getAllVowelReplacedVariants('FadTheChad'))
// 输出结果和你要求的数组完全匹配

如果需要保留原字符串(完全不替换的情况),只要把循环起始值mask = 1改成mask = 0即可,会返回8个结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:15:02