2017-09-16 169 views
1
public static void nameAsk() 
    { 
     bool check = true; 

     while (check) 
     { 
      Console.WriteLine("What is your name?"); 
      string name = Console.ReadLine(); 
      int userName; 

      bool checkIfInt = int.TryParse(name, out userName); 

      if (checkIfInt) 
      { 
       Console.WriteLine("Welcome " + name + "!"); 
       break; 
      } 
      else 
      { 
       Console.WriteLine("Please enter a name without numbers"); 
      } 
     } 
    } 

我试图检查名称是否包含一个int,但不管我做什么,我似乎无法得到我期待的输出。检查一个字符串是否包含一个int

我已经输入了以下3个输出,这些都是结果我得到:

[输入:“John2” |输出:“请输入一个没有数字的名字”]

[输入:“John”| |输出:“请输入一个没有数字的名称”]

[输入:9 |输出: “欢迎9”]

通过改变布尔checkIfInt固定= name.Any(Char.IsDigit),然后我把它放到我的if语句,但它设置为false,如下所示:

bool checkIfInt = name.Any(Char.IsDigit); 

if (!checkIfInt) 
{ 
    Console.WriteLine("Welcome " + name + "!"); 
    break; 
} 
else 
{ 
    Console.WriteLine("Please enter a name without numbers"); 
} 
} 
+0

应该'John2'失败,因为它包含一个'int',还是应该把它传递,因为它并不完全是' int'? – dasblinkenlight

+1

[检查一个字符串中是否至少有一个使用LINQ的数字]的可能重复(https://stackoverflow.com/questions/1540620/check-if-a-string-has-at-least-one-number- in-it-using-linq) –

+0

或[在C#中,如何检查一个字符串是否包含整数?](https://stackoverflow.com/questions/18251875/in-c-how-to-check-whether- a-string-contains-an-integer) –

回答

3

int.ParseInt只有当nameint并且没有其他字符时才会通过。

您可以检查是否字符串包含了一些在任何地方使用它使用LINQ Any

if (name.Any(Char.IsDigit)) { 
    ... 
} 
+1

我只是设置一个布尔型var = name.Any(Char.IsDigit)),我不得不使var等于false为了获得我在输出中寻找的东西,它现在可以工作,谢谢! – KlappDaddy

相关问题