我在尝试在JavaScript中查找字符串中的最后一个元音时遇到了麻烦。我发现了如何找到字符串的第一个元音,并试图修改该代码,但是我被卡住了。我尝试编辑var vowels
,并将0更改为-1,反之亦然,但没有任何效果。
这是我的代码:
function endVowel(x){
var vowels = ("aeiouAEIOU");
return vowels.indexOf(x[-1]) !== 0;
}
我想念什么或做错什么了?
答案 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..."));
""
)。