Javascript检查字符是否为元音

时间:2014-11-14 09:43:15

标签: javascript character

我在这里看了很多与我有关的问题,但他们都使用不同的方法来处理我必须使用的方法。我知道这是一个非常漫长的方式来找出有更简单的方法,但我只是按照说明。

为什么以下代码不起作用?该函数检查它是否是元音。 然后检查输入以查看它的长度是否为1.如果为1,则调用该函数。如果它大于1,则在长度为1之前请求另一个输入。

我现在看到JS中不存在布尔值。我想这个问题现在无效了!

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));

8 个答案:

答案 0 :(得分:6)

你在三个地方调用isVowel,只丢掉前两个中的返回值。如果您想在前两个地方看到返回值,请按照上一个示例中的alert或其他几种方式显示它。

还有其他问题:

  • 作为devqon points out,您使用了boolean而不是var,因此代码无法解析

  • 任何时候你发现自己写作:

    var result;
    if (condition) {
        result = true;
    } else {
        result = false;
    }
    return result;
    

    ...停下来做成:

    var result = condition;
    return result;
    

    所以isVowel

    function isVowel(x) {
    
        var result;
    
        result = x == "A" || x == "E" || x == "I" || x == "O" || x == "U";
        return result;
    }
    

    (当然,您可以将其设为单行,但以这种方式调试会更容易。)

  • 您的}阻止之后还有一个额外的if(合理,一致的格式化会使这一点变得明显)

  • 您的while循环永远不会结束,因为您永远不会使用input

  • 的返回值更新prompt
  • 使用if

  • 而不是while后跟do-while

以下是仅包含这些更改的更新版本

function isVowel(x) {

  var result;

  result = x == "A" || x == "E" || x == "I" || x == "O" || x == "U";
  return result;
}

var input;

do {
  input = prompt("Enter a character ");
  if (input.length == 1) {
    alert(isVowel(input));
  }
} while (input.length != 1);

答案 1 :(得分:3)

尝试此功能,无论大写或小写

function isVowel(x) {  return /[aeiouAEIOU]/.test(x); }

var input = '';
while (input.length != 1) {
  input = prompt("Enter a character ");
}
alert(isVowel(input));

答案 2 :(得分:2)

我想要一个数学解决方案,所以我提出了这个:

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;
}

您将字符作为字符串发送给它。它将检测以下任何一个:AEIOUaeiou

幻数只是AEIOU的ascii代码相乘。检查c == 75是因为K是唯一也得到完美除法的字符,只要我们将检查约束为大写字母。

注意:如果您可以删除c = c.charCodeAt(c);,代码运行速度会更快。它几乎与其他方法一样快,并且可能仍然可以改进此代码。

答案 3 :(得分:2)

答案只能是一行,简短而甜美。见下文。

    function isVowel(x) { 
        return ("aeiouAEIOU".indexOf(x) != -1); 
    }

答案 4 :(得分:1)

(function(){
     var vowel_string = "aieouAIEOU";
     input = prompt("Enter a single character...");
     if (input.length == 1){
       if (vowel_string.contains(input)){
            alert(input + " is a vowel");
  }
 }
 else{
     alert("Enter a single character");
 }   
})(); 

答案 5 :(得分:1)

这是一个简短的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'));

答案 6 :(得分:0)

以简单的方式检查给定字符串是否包含元音

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);

答案 7 :(得分:0)

函数is_vowel(char){   让listofVowel = ['a','i','e','o','u','A','I','E','O','U'];

返回Vowel.includes(char)的列表; }

console.log(is_vowel('a'));