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

Reverse vowels in a string, using regex

本文关键字:字符串 正则表达式      更新时间:2023-09-26

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

  • "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);