因此,我正在研究一个项目,正如标题所述,我试图查找javascript中字符串的第一个字母是否是元音。到目前为止,我的代码看起来像这样。
function startsWithVowel(word){
var vowels = ("aeiouAEIOU");
return word.startswith(vowels);
}
答案 0 :(得分:2)
您已经很接近了,只需使用[0]
切出单词并进行检查:
function startsWithVowel(word){
var vowels = ("aeiouAEIOU");
return vowels.indexOf(word[0]) !== -1;
}
console.log("apple ".concat(startsWithVowel("apple") ? "starts with a vowel" : "does not start with a vowel"));
console.log("banana ".concat(startsWithVowel("banana") ? "starts with a vowel" : "does not start with a vowel"));
答案 1 :(得分:1)
startsWith
仅接受一个字符。对于这种功能,请改用正则表达式。从单词(word[0]
中获取第一个字符,然后查看其字符是否包含在不区分大小写的字符集中[aeiou]
中:
function startsWithVowel(word){
return /[aeiou]/i.test(word[0]);
}
function startsWithVowel(word){
return /[aeiou]/i.test(word[0]);
}
console.log(
startsWithVowel('foo'),
startsWithVowel('oo'),
startsWithVowel('bar'),
startsWithVowel('BAR'),
startsWithVowel('AR')
);
答案 2 :(得分:1)
ES6 oneliner:
const startsWithVowel = word => /[aeiou]/i.test(word[0]);
答案 3 :(得分:1)
如果您不关心重音符号,则可以使用此功能:
const is_vowel = chr => (/[aeiou]/i).test(chr);
is_vowel('e');
//=> true
is_vowel('x');
//=> false
但是它将失败,并带有法语中常见的重音符号,例如:
is_vowel('é'); //=> false
您可以使用String#normalize
“分割”一个字符:基本字符,后跟重音符号。
'é'.length;
//=> 1
'é'.normalize('NFD').length;
//=> 2
'é'.normalize('NFD').split('');
//=> ["e", "́"] (the letter e followed by an accent)
现在您可以摆脱重音符号了:
const is_vowel = chr => (/[aeiou]/i).test(chr.normalize('NFD').split('')[0]);
is_vowel('é');
//=> true