检查字符串输入的内容

如何检查输入是否是特定类型的字符串。 所以没有数字,没有“/”,……

好吧,要检查输入实际上是System.String类型的对象,您可以简单地执行:

 bool IsString(object value) { return value is string; } 

要检查string只包含字母,您可以执行以下操作:

 bool IsAllAlphabetic(string value) { foreach (char c in value) { if (!char.IsLetter(c)) return false; } return true; } 

如果你想组合这些,你可以这样做:

 bool IsAlphabeticString(object value) { string str = value as string; return str != null && IsAllAlphabetic(str); } 

如果你的意思是“字符串完全是字母”,你可以这样做:

 string myString = "RandomStringOfLetters"; bool allLetters = myString.All( c => Char.IsLetter(c) ); 

这基于LINQ和Char.IsLetter方法。

它并不完全清楚你想要什么,但你可以用正则表达式来做。 例如,要检查您的字符串是否仅包含az或AZ中的字母,您可以执行以下操作:

 string s = "dasglakgsklg"; if (Regex.IsMatch(s, "^[az]+$", RegexOptions.IgnoreCase)) { Console.WriteLine("Only letters in az."); } else { // Not only letters in az. } 

如果您还想允许空格,下划线或其他字符,只需将它们添加到正则表达式的方括号中。 请注意,某些字符在正则表达式字符类中具有特殊含义,需要使用反斜杠进行转义。

您也可以使用\p{L}代替[az]来匹配任何被认为是字母的Unicode字符,包括外国字母表中的字母。

 using System.Linq; ... bool onlyAlphas = s.All(c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')); 

这样的事情(未经测试)可能符合您的(模糊)要求。

 if (input is string) { // test for legal characters? string pattern = "^[A-Za-z]+$"; if (Regex.IsMatch(input, pattern)) { // legal string? do something } // or if (input.Any(c => !char.IsLetter(c))) { // NOT legal string } }