如何在JavaScript字符串中找到最后一个元音

时间:2019-12-30 02:38:38

标签: javascript string

我在尝试在JavaScript中查找字符串中的最后一个元音时遇到了麻烦。我发现了如何找到字符串的第一个元音,并试图修改该代码,但是我被卡住了。我尝试编辑var vowels,并将0更改为-1,反之亦然,但没有任何效果。

这是我的代码:

function endVowel(x){
   var vowels = ("aeiouAEIOU");
   return vowels.indexOf(x[-1]) !== 0;
}

我想念什么或做错什么了?

5 个答案:

答案 0 :(得分:0)

使用正则表达式匹配元音,同时对其他元音使用否定超前查询:

function endVowel(x){
   const match = x.match(/[aeiou](?!.*[aeiou])/i);
   return match ? match[0] : 'No match';
}

console.log(endVowel('foobar'));

答案 1 :(得分:0)

function findLastVowel(string) {
 let pattern = /[aeiouAEIOU]/gim;
 let result = [...string.match(pattern)]
 return result[result.length - 1]
}

console.log(findLastVowel("your string here"))

答案 2 :(得分:0)

vowels.indexOf(x[-1])尝试在x中查找最后一个字符(实际上,x[x.length-1]x.slice(-1)是正确的语法),但是如果这没有发生,是元音,就行不通。在这种情况下,您需要从头开始向后迭代以测试其他字符。

要获取最后一个元音的索引,可以使用正则表达式从右侧剥离非元音并返回长度-1:

const lastVowel = s => s.replace(/[^aeiou]*$/i, "").length - 1;

[
  "foobar",
  "cdgh",
  "abb",
  "baabbba"
].forEach(e => console.log(`"${e}" => ${lastVowel(e)}`));

如果您只想要最后一个元音(这比具有索引的作用要小(本质上可以给您提供两个索引),请对元音进行模式匹配并返回最后一个元素:

const lastVowel = s => (s.match(/[aeiou]/ig) || "").slice(-1);

[
  "foobar",
  "cdgh",
  "abb",
  "beobbba"
].forEach(e => console.log(`"${e}" => "${lastVowel(e)}"`));

答案 3 :(得分:0)

一种技术是使用反向字符串帮助函数在endVowel上构建startVowel。在您可以轻松逆转的事物上使用第一个值和最后一个值时,这通常是一个普遍原则。

这是一个示例(请注意,endVowel完全不取决于startVowel的实现,而仅取决于其行为):

const startVowel = (str, vowels = "aeiouAEIOU") =>
   str .split('') .find (c => vowels .includes (c))

const reverseString = (str) => str .split('') .reverse () .join('')

const endVowel = (str) => startVowel (reverseString (str))

console .log (
  startVowel ('The quick brown fox jumped over the lazy dog'), //=> 'e'
  endVowel   ('The quick brown fox jumped over the lazy dog'), //=> 'o'
)


讲英语的双关语强制语:问:当您无法进行元音运动时,您是什么?答:口吃。

答案 4 :(得分:-1)

这将为您提供字符串中的最后一个元音字符(保留原始的大写/小写字母)。当然,如果您只是在寻找最后一个元音的索引,那就是indexOfLastVowel

function endVowel(x){
	var y = x.toLowerCase();
	var indexOfLastVowel = Math.max(y.lastIndexOf("a"), y.lastIndexOf("e"), y.lastIndexOf("i"), y.lastIndexOf("o"), y.lastIndexOf("u"));
	return x.charAt(indexOfLastVowel);
}

console.log(endVowel("Find the last vowel in this string..."));
如果字符串中没有元音,则返回一个空字符串("")。