在C#中为字母定义范围

时间:2011-05-05 15:45:49

标签: c# .net-2.0 c#-2.0 ascii

我在C#2.0中创建标记表程序时遇到了问题,这里是代码

Console.WriteLine("Prislogix Public School");
Console.WriteLine("\n\nMarksheet\n\n");
Console.WriteLine("Enter Student Name : ");
string name = Console.ReadLine();
Console.WriteLine("\nEnter Class : ");
string cls = Console.ReadLine();
Console.WriteLine("\nEnter Roll Number : ");
int roll = int.Parse(Console.ReadLine());

这是基本的写入和读取任务。我想要创建的是名称的条件。例如,如果用户在名称字段中输入123,则其名称为123.

我不希望它允许名称字段中的任何数字。如何才能做到这一点? 我是否必须为字母表定义ASCII代码的范围?我认为将使用do..while循环,但我应该如何定义字母之间的范围(A到Z或a到z)。

9 个答案:

答案 0 :(得分:1)

你可以这样做:

if(!Regex.Matches(name, "^[a-zA-Z]+$"))
    // name is invalid

答案 1 :(得分:1)

与正则表达式匹配:

if (!Regex.Match(name, "^([A-Za-z ]+)$").Success)
{
  // Error message here.
}

这也将允许人们姓名中的空格,这可能是你想要的。

更多关于C#中的正则表达式:http://tim.oreilly.com/pub/a/oreilly/windows/news/csharp_0101.html

答案 2 :(得分:0)

Match match = Regex.Match(name, @"[A-Za-z]+", RegexOptions.IgnoreCase);
// Here we check the Match instance.
if (match.Success)
{
...
}

答案 3 :(得分:0)

您可以使用RegEx类并查看它是否与您的输入相匹配。

答案 4 :(得分:0)

你可以用一个简单的循环

来做到这一点
string name = String.empty
do
{
  Console.WriteLine("Enter Student Name : ");
  name = Console.ReadLine()
}
while(!Regex.Match(name, "^([A-Za-z ]+)$").Success);

答案 5 :(得分:0)

您可以使用正则表达式。如果输入无效条目,则拒绝该条目,显示消息并再次请求输入。您可以使用一个while循环为5个行完成所有操作,每个Console.ReadLine()。

也:

int roll = int.Parse(Console.ReadLine()); 

如果字符串包含任何非数字字符,int.Parse将导致异常。

答案 6 :(得分:0)

最简单的方法,也可能是最简单的方法,就是运行用户通过正则表达式输入的内容:

...
var validName = false;
 while (!validName)
 {
    if(!Regex.Match(name, "^[A-Za-z ]+$")
      Console.WriteLine("Invalid name; try again");
    else
      validName = true;
 }
...

答案 7 :(得分:0)

如果测试是,该字符串不应包含任何数字(允许所有其他字符),则可以使用正则表达式:

var regExContainsDigit = new Regex(@"\d");

if (regExContainsDigit.IsMatch(name)) {
   // contains at least 1 digit
}

如果名称只允许使用字母,则会变得更加复杂。那么你也应该考虑空间,点,字母与diacrits(ëé)等。

答案 8 :(得分:0)

string sPattern = "^[A-Za-z]+$"
bool isValid = false;
while(!isValid)
{
   Console.WriteLine("Enter Student Name : ");
   string name = Console.ReadLine();
   isValid = System.Text.RegularExpressions.Regex.Match(name, sPattern);
}

基本上检查正则表达式的名称值,直到它们正确