Javascript检查字符是否为元音
我已经看了很多与我相关的问题,但它们都使用了不同的方法,我必须使用的方法。我知道这是一个非常冗长的方法来找出什么时候有更简单的方法,但我只是按照指示 为什么下面的代码不起作用?该函数检查它是否为元音。 然后检查输入的长度是否为1。如果是1,则调用函数。如果大于1,则请求另一个输入,直到长度为1 我现在明白了,布尔值在JS中并不存在。我猜这个问题现在无效了Javascript检查字符是否为元音,javascript,character,Javascript,Character,我已经看了很多与我相关的问题,但它们都使用了不同的方法,我必须使用的方法。我知道这是一个非常冗长的方法来找出什么时候有更简单的方法,但我只是按照指示 为什么下面的代码不起作用?该函数检查它是否为元音。 然后检查输入的长度是否为1。如果是1,则调用函数。如果大于1,则请求另一个输入,直到长度为1 我现在明白了,布尔值在JS中并不存在。我猜这个问题现在无效了 function isVowel(x){ boolean result; if(x == "A" || x ==
function isVowel(x){
boolean result;
if(x == "A" || x == "E" || x == "I" || x == "O" || x == "U" ) {
result = true;
}
else{
result = false;
}
return result;
}
var input;
input = prompt("Enter a character ");
input = input.toUpperCase();
if(input.length == 1){
isVowel(input);
}
}
else{
while(input.length != 1){
prompt("Enter a character ");
if(input.length == 1){
isVowel(input);
}
}
}
alert(isVowel(input));
您在三个位置调用了
isVowel
,并在前两个位置丢弃了返回值。如果要在前两个位置查看返回值,请显示它(通过上一个示例中的alert
或其他任何方式)
还有其他问题:
- 由于使用了
而不是boolean
,因此代码不会解析var
- 任何时候你发现自己在写:
…停下来,让它:var result; if (condition) { result = true; } else { result = false; } return result;
所以对于var result = condition; return result;
:isvore
(当然,您可以将其设置为一行程序,但这样更容易调试。)function isVowel(x) { var result; result = x == "A" || x == "E" || x == "I" || x == "O" || x == "U"; return result; }
- 在
块之后有一个额外的if
(合理、一致的格式会使这一点变得明显)}
- 您的
循环将永远不会结束,因为您永远不会使用while
提示符的返回值更新
输入
- 使用
do while
函数是元音(x){
var结果;
结果=x==“A”| x==“E”| x==“I”| x==“O”| x==“U”;
返回结果;
}
var输入;
做{
输入=提示(“输入字符”);
if(input.length==1){
警报(IS元音(输入));
}
}while(input.length!=1)代码>无论大小写都可以尝试此函数
函数是元音(x){return/[aeiouAEIOU]/.test(x);}
var输入=“”;
while(input.length!=1){
输入=提示(“输入字符”);
}
警报(IS元音(输入))编码>以简单方式检查给定字符串是否包含元音
var input = "kad aeiou";
function vowvelOrNot(input){
var str = input.toLowerCase();
if(str.length > 0){
for(i=0; i <= str.length; i++){
switch (str[i]){
case 'a':
var flag_a = true;
break;
case 'e':
var flag_e = true;
break;
case 'i':
var flag_i = true;
break;
case 'o':
var flag_o = true;
break;
case 'u':
var flag_u = true;
break;
}
if(flag_a && flag_e && flag_i && flag_o && flag_u){
return "Given string is Vowel";
}
}
return "Given string is Not Vowel";
}else{
return "please enter the correct value";
}
}
var res = vowvelOrNot(input);
console.log(res);
var input=“kad aeiou”;
函数VOVERNOT(输入){
var str=input.toLowerCase();
如果(str.length>0){
对于(i=0;i我想要一个数学解,所以我想出了这个:
function isVowel(c) {
c = c.charCodeAt(c);
var magicNumber = 2198524575;
c = (c > 96) ? (c-32) : c;
if( c < 65 || c == 75 || c > 90)
return false;
var div = magicNumber / c;
var diff = div - Math.floor(div);
if( diff == 0 )
return true;
return false;
}
函数是元音(c){
c=c.charCodeAt(c);
var magicNumber=2198524575;
c=(c>96)?(c-32):c;
如果(c<65 | | c==75 | | c>90)
返回false;
var div=magicNumber/c;
var diff=分区-数学楼层(分区);
如果(差异==0)
返回true;
返回false;
}
您将字符作为字符串发送给它。它将检测以下任何一项:AEIOUaeiou
幻数就是AEIOU的ascii码相乘。检查c==75是因为K是唯一一个也可以得到完美除法的字符,只要我们将检查限制为大写字母
注意:如果您可以删除c=c.charCodeAt(c);
则代码运行速度会更快。它几乎与其他方法一样快,并且此代码可能仍然可以改进。答案可以是一行,并且简短而甜美。请参见下文
function isVowel(x) {
return ("aeiouAEIOU".indexOf(x) != -1);
}
函数是_元音(char){
让Listof元音=['a','i','e','o','u','a','i','e','o','u']
返回元音的列表。包括(字符);
}
log(is_元音('a'));这里有一个简短的ES6帮助程序来测试元音
const isLetterAVowel = (str) => {
return ['a', 'e', 'i', 'o', 'u'].includes(str.charAt(0).toLowerCase());
}
辅音返回false
:
console.log(isLetterAVowel('cat'));
元音返回true
:
console.log(isLetterAVowel('emu'));
boolean
在javascript中不存在,请改用var
哦。至少我在学习早期就发现了这一点。您可以在自己的代码中自由使用您想要的任何代码格式和缩进,但在寻求帮助时,请花时间以某种合理、一致的方式格式化代码,也许可以使用类似于T的服务。函数是_元音(str){return str.match('a | e | i | o | u/i')?true:false;}
是编写该函数的更好方法-在以下情况下不区分大小写:matters@Novocaine:说得好,说得好!”我知道要想知道什么时候有更简单的方法,这是一个非常冗长的过程,但我只是按照说明去做“我知道,要想知道什么时候有更简单的方法,这是一个非常冗长的过程,但我只是按照指示去做。"@T.J.Crowder虽然您严格按照原始海报的说明进行了操作,但您的回答并不是提问者可以使用的最佳代码示例。TangChanrith发布了一个优雅而简单的问题解决方案,除了您的信息丰富的答案。然而,人们在未来寻找类似的解决方案时n要么选择对OP有用但最终效率低下的解决方案,要么选择TangChanrith的解决方案,但至少他们有选择权。a、e、i、o、u-将返回“false”。要修复此问题,请添加x=x.toUpperCase();@MPV-我不认为这是一个关于检测元音的广义问题。它是关于OPs代码为什么不起作用的问题。我使用Es6这是真正的单线解决方案const isVowel=x=>!!x.match(/[aeiou]/I)
console.log(isLetterAVowel('emu'));