检查字符串输入的内容

时间:2010-07-20 18:44:12

标签: c#

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

5 个答案:

答案 0 :(得分:15)

好吧,要检查输入实际上是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);
}

答案 1 :(得分:10)

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

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

这是基于LINQ和Char.IsLetter方法。

答案 2 :(得分:6)

目前还不完全清楚你想要什么,但你可以用正则表达式来做。例如,要检查您的字符串是否只包含a-z或A-Z中的字母,您可以执行以下操作:

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

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

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

答案 3 :(得分:2)

using System.Linq;
...

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

答案 4 :(得分:1)

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

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 
    }
}