如果我在Main方法内编写以下代码:
Console.Write("First name: ");
student.FirstName = Console.ReadLine();
其中FirsName是Student类的属性,如何防止用户输入整数字符?可以使用try-catch块完成此操作吗?
答案 0 :(得分:1)
如果要阻止用户“输入”数字字符,可以执行以下操作。
var value = new StringBuilder();
var run = true;
while (run)
{
var inputKey = Console.ReadKey(true);
switch (inputKey.Key)
{
case ConsoleKey.Enter:
run = false;
Console.WriteLine();
break;
case ConsoleKey.Backspace:
value.Append(inputKey.KeyChar);
break;
default:
if (!char.IsDigit(inputKey.KeyChar))
value.Append(inputKey.KeyChar);
Console.Write(inputKey.KeyChar);
break;
}
}
var name = value.ToString();
答案 1 :(得分:0)
您不是很专一,但是根据您提供的数据,您可以使用try catch
执行以下操作:
class Program
{
static void Main(string[] args)
{
Student student = new Student();
try
{
Console.Write("First name: ");
student.FirstName = Console.ReadLine();
ValidateMyString(student.FirstName);
Console.ReadLine();
}
catch(Exception e)
{
throw e;
}
}
static void ValidateMyString(string s)
{
if (s.Any(char.IsDigit))
{
throw new FormatException();
}
}
}