我想编写一个函数,该函数接受一个字符串并返回一个使用 for 循环删除所有元音的新字符串。我尝试过使用各种字符串方法但没有成功。
到目前为止,这是我的代码的样子:
function disemvowel(string) {
let newString = "";
for (let i = 0; i < str.length; i++) {
if (string[i] != "a" && string[i] != "e" && string[i] != "i" && string[i] != "o" && string[i] != "u") {
return newString += string[i];
};
};
};
Run Code Online (Sandbox Code Playgroud)
更新 问题不是重复的。这是我一直在寻找的解决方案。
function disemvowel(string) {
let vowels = {
'a': true,
'e': true,
'i': true,
'o': true,
'u': true
};
let result = "";
for (let i = 0; i < string.length; i++) {
let letter = string[i].toLowerCase();
if (!vowels[letter]) {
result += string[i];
}
};
return result;
};
Run Code Online (Sandbox Code Playgroud)
最简单的方法是replace使用正则表达式的函数:
function removeVowels( input ){
return input.replace(/[aeiouAEIOU]/g, "");
}
Run Code Online (Sandbox Code Playgroud)
备注:该函数不测试输入是否为String,这里假设。
正如 Jonas Wilms 所指出的,通过将i(ignore case) 标志与正则表达式一起使用,可以以更短的方式实现相同的效果:
function removeVowels( input ){
return input.replace(/[aeiou]/gi, "");
}
Run Code Online (Sandbox Code Playgroud)