【问题标题】:Replace every vowel with random vowels and every consonant with random consonants in Javascript在Javascript中用随机元音替换每个元音,用随机辅音替换每个辅音
【发布时间】:2020-05-16 14:52:49
【问题描述】:

我需要一个函数,它接受一个字符串并将其中的每个元音替换为随机元音,并将其中的每个辅音替换为随机辅音,并返回与 Javascript 中原始大小写相同的新字符串。有没有快速的方法?

例如: 如果字符串是“John”,那么它可以返回“Lavr”或“Xiqp”。

【问题讨论】:

  • 你试过构建它吗?这当然是可能的,快速的部分完全取决于你如何构建它。

标签: javascript string random replace


【解决方案1】:

这绝对是可能的。 首先,创建一组元音和辅音。 创建一个循环来遍历您的原始字符串,如下所示:

for (var i = 0; i < str.length; i++) {
  const currentChar = str.charAt(i)
}

在这个循环中,使用字符串原型方法检查你的 char 是大写还是小写:

currentChar.toLowerCase() === currentChar

看看你的字符是元音还是辅音:

vowels.find(currentChar)

如果没有找到元素,这将导致-1,您可以使用该值来确定字符的类型。

然后,使用 JS Math 从您的元音或辅音数组中选择一个随机字符。

vowels[Math.floor(Math.random()*vowels.length)]

使用上面的值替换那个字符。对每个字符重复并用字符串连接将它们重新组合在一起。

【讨论】:

    【解决方案2】:

    您需要一个完整的辅音和元音列表来进行比较,因此请为这两者设置变量。然后,遍历字符串,检查每个字母是否是小写元音、小写辅音、大写元音、大写辅音或其他。如果您找到小写字母,只需使用Randojsrando() 函数将其替换为相应元音/辅音变量中的随机字符即可。如果您发现某些内容是大写的,请使用 JavaScript 的内置 toUppercase() 方法将其替换为相应变量中的随机大写字符。否则,如果不是字母,则直接将其添加到字符串中。

    function chaos(str) {
      var consonants = "bcdfghjklmnpqrstvwxyz";
      var vowels = "aeiou";
    
      var newStr = "";
      for (var i = 0; i < str.length; i++) {
        if (vowels.indexOf(str[i]) > -1) newStr += rando(vowels);
        else if (consonants.indexOf(str[i]) > -1) newStr += rando(consonants);
        else if (vowels.toUpperCase().indexOf(str[i]) > -1) newStr += rando(vowels.toUpperCase());
        else if (consonants.toUpperCase().indexOf(str[i]) > -1) newStr += rando(consonants.toUpperCase());
        else newStr += str[i];
      }
      return newStr;
    }
    
    console.log(chaos("This is CHAOS."));
    &lt;script src="https://randojs.com/1.0.0.js"&gt;&lt;/script&gt;

    请注意,rando() 函数来自 randojs.com,因此如果您想使用此代码,您只需确保它位于 html 文档的 head 标记的顶部:

    <script src="https://randojs.com/1.0.0.js"></script>
    

    它只是让随机性更简单,更易读。

    旁注:下次,请记住发布您已经尝试过的代码,而不是仅仅提出问题。当你碰壁时,这个网站在这里提供帮助,但如果你没有写任何东西,你就不能碰壁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多