javascript - 使用正则表达式反转字符串中的元音

标签 javascript regex

我正在研究一种算法,该算法接受一个字符串作为输入,并反转该字符串的元音。

  • 'hello' 应该返回为 'holle'
  • “wookiE”应返回为“wEikoo”

str.replace 可以用作解决方案吗?

function reverseVowels(str) {
    return str.replace(/[aeiou]/-g, /[aeiou]+1/);
}

我不确定 replace 函数的第二个参数是什么。我打算找到第一个元音,然后移动到下一个元音来替换它。这可以只用这个方法来完成,还是需要一个 forEach/for 循环?

最佳答案

您可以分两个阶段执行此操作:

  • 将元音提取到一个数组中
  • 对原始字符串执行替换,在每次匹配时调用一个函数并从堆栈中弹出最后一个元音以替换它。

代码:

function reverseVowels(str){
   var vowels = str.match(/[aeiou]/g);
   return str.replace(/[aeiou]/g, () => vowels.pop());
}

// example
var original = 'James Bond';
var result = reverseVowels(original);

// output for snippet
console.log(original + ' => ' + result);

关于javascript - 使用正则表达式反转字符串中的元音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37170965/

相关文章:

javascript - 是否有办法从使用 Object.defineProperty() 定义的对象中删除属性?

javascript - 单击事件后无法从 url 中删除主题标签

javascript - 如何使用一些图像或图例添加到工具提示?

javascript - 需要我的模块的多个文件正在覆盖它的变量

c# - 正则表达式,在两个词之间找一个词

regex - 从 R 中的字符串中删除指定的模式

javascript - AngularJS - 使用过滤器和 groupBy 后计算结果

python - 如何在不同时包含关键字的情况下获得 Python re 模块的完全匹配?

regex - 如何从一行中捕获多个正则表达式匹配到 Powershell 中的 $matches 魔术变量?

javascript - Vanilla Javascript split(regex) 来匹配前面没有逗号的空格?