validation一个string只包含C#中的字母

我有一个inputstring,我想validation它包含:

  • 只有字母或
  • 只有字母和数字或
  • 只有字母,数字或下划线

为了澄清,我在代码中有3个不同的情况,每个都要求不同的validation。 在C#中实现这个最简单的方法是什么?

只有字母:

Regex.IsMatch(input, @"^[a-zA-Z]+$"); 

只有字母和数字:

 Regex.IsMatch(input, @"^[a-zA-Z0-9]+$"); 

只有字母,数字和下划线:

 Regex.IsMatch(input, @"^[a-zA-Z0-9_]+$"); 
 bool result = input.All(Char.IsLetter); bool result = input.All(Char.IsLetterOrDigit); bool result = input.All(c=>Char.IsLetterOrDigit(c) || c=='_'); 

仅限信件:

 Regex.IsMatch(theString, @"^[\p{L}]+$"); 

字母和数字:

 Regex.IsMatch(theString, @"^[\p{L}\p{N}]+$"); 

字母,数字和下划线:

 Regex.IsMatch(theString, @"^[\w]+$"); 

请注意,这些模式也匹配国际字符(而不是使用az结构)。

对于那些宁愿不使用正则expression式,并在.NET 2.0 Framework(也就是LINQ)上的人:

只有信件:

 public static bool IsAllLetters(string s) { foreach (char c in s) { if (!Char.IsLetter(c)) return false; } return true; } 

仅数字:

  public static bool IsAllDigits(string s) { foreach (char c in s) { if (!Char.IsDigit(c)) return false; } return true; } 

只有数字或字母:

  public static bool IsAllLettersOrDigits(string s) { foreach (char c in s) { if (!Char.IsLetterOrDigit(c)) return false; } return true; } 

只有数字或字母或下划线:

  public static bool IsAllLettersOrDigitsOrUnderscores(string s) { foreach (char c in s) { if (!Char.IsLetterOrDigit(c) && c != '_') return false; } return true; } 

我认为使用正则expression式是一个很好的例子:

 public bool IsAlpha(string input) { return Regex.IsMatch(input, "^[a-zA-Z]+$"); } public bool IsAlphaNumeric(string input) { return Regex.IsMatch(input, "^[a-zA-Z0-9]+$"); } public bool IsAlphaNumericWithUnderscore(string input) { return Regex.IsMatch(input, "^[a-zA-Z0-9_]+$"); } 

你可以循环string的string,并使用Char方法IsLetter进行检查,但是你也可以使用String方法IndexOfAny来search其他string,而不是假设在string中。

迭代string字符并使用名为“IsLetter”和“IsDigit”的“Char”函数。

如果你需要更具体的东西 – 使用正则expression式类。

如果你是新手,那么你可以参考我的代码..我所做的就是把一张支票,以便我只能得到字母和空格! 您可以在第二个if语句后重复for循环以再次validationstring

  bool check = false; Console.WriteLine("Please Enter the Name"); name=Console.ReadLine(); for (int i = 0; i < name.Length; i++) { if (name[i]>='a' && name[i]<='z' || name[i]==' ') { check = true; } else { check = false; } } if (check==false) { Console.WriteLine("Enter Valid Value"); name = Console.ReadLine(); }