如何在C#中测试输入值= char A - Z

时间:2015-06-04 20:30:59

标签: c# unicode while-loop

 while (asteriskWord != hangCharacters && score < 5)
 {               
      while ( letter != ) //This is where I want to test for A-Z a-z
      { 
          Console.WriteLine("Enter a letter please");
          letter = Convert.ToChar(Console.ReadLine());
      }
 }   

在第一个while-loop之后,我希望能够将输入置于while循环中,如果值为= letters A-Z或a-z ,则会中断。

这样,如果用户输入错误的信息,循环将continue询问信息。

感谢您的时间和考虑。我也试着写信!=&#39; A&#39; &安培;&安培;信!=&#39; a&#39; ......等等,但由于某种原因它没有用。

3 个答案:

答案 0 :(得分:13)

字符可以相互比较,就像数字一样:

while (!((letter >= 'A' && letter <= 'Z') || (letter >= 'a' && letter <= 'z'))) {
    Console.WriteLine("Enter a letter please");
    letter = Convert.ToChar(Console.ReadLine());
}

答案 1 :(得分:8)

最简单的方法就是使用比较。如果你肯定想在一个单独的表达中做到这一点,Glorfindel的答案是恰当的。然而,所有这些括号和否定使我对可读性感到紧张。我将它分解为一个单独的方法:

while (!IsValidLetter(letter))
{
    ...
}

...

private static bool IsValidLetter(char letter)
{
    return (letter >= 'a' && letter <= 'z') ||
           (letter >= 'A' && letter <= 'Z');
}

无论你发现哪个更具可读性 - 后者更容易在以后修改,当然,如果你最终有更复杂的要求。

答案 2 :(得分:3)

另一种选择是使用正则表达式,如下所示:

        while (!Regex.IsMatch(letter, "[a-zA-Z]"))
        {
            Console.WriteLine("Enter a letter please!");
            letter = Console.ReadLine();
        }