首页 文章

验证字符串是否只包含C#中的字母

提问于
浏览
163

我有一个输入字符串,我想验证它包含:

  • 只有字母或

  • 只有字母和数字或

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

为了澄清,我在代码中有3个不同的案例,每个案例都要求进行不同的验证 . 在C#中实现这一目标的最简单方法是什么?

9 回答

  • 250

    只有字母:

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

    只有字母和数字:

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

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

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

    仅限信件:

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

    字母和数字:

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

    字母,数字和下划线:

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

    注意,这些模式也匹配国际字符(而不是使用 a-z 构造) .

  • 212

    对于那些不愿意使用Regex并且使用.NET 2.0 Framework(AKA no LINQ)的人:

    Only Letters:

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

    Only Numbers:

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

    Only Numbers Or Letters:

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

    Only Numbers Or Letters Or Underscores:

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

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

    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_]+$");
    }
    
  • 18

    你可以循环使用字符串的字符并使用字符串方法IsLetter进行检查,但你也可以使用字符串方法IndexOfAny来搜索其他不应该在字符串中的字符 .

  • 1

    迭代字符串字符并使用名为'IsLetter'和'IsDigit'的'Char'函数 .

    如果你需要更具体的东西 - 使用Regex类 .

  • 0

    如果你是一个新手,那么你可以从我的代码中获取参考..我所做的就是检查,以便我只能获得字母和空格!您可以在第二个if语句之后重复for循环以再次验证字符串

    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();
           }
    
  • 44

    最近,我在一个函数中进行了性能改进,该函数在该页面的帮助下检查字符串中的字母 .

    我发现使用正则表达式的解决方案比使用Char.IsLetterOrDigit检查的解决方案慢30倍 .

    我们不确定那些字母或数字是否包含,我们只需要拉丁字符,因此基于Char.IsLetterOrDigit函数的反编译版本实现了我们的功能 .

    这是我们的解决方案:

    internal static bool CheckAllowedChars(char uc)
        {
            switch (uc)
            {
                case '-':
                case '.':
                case 'A':
                case 'B':
                case 'C':
                case 'D':
                case 'E':
                case 'F':
                case 'G':
                case 'H':
                case 'I':
                case 'J':
                case 'K':
                case 'L':
                case 'M':
                case 'N':
                case 'O':
                case 'P':
                case 'Q':
                case 'R':
                case 'S':
                case 'T':
                case 'U':
                case 'V':
                case 'W':
                case 'X':
                case 'Y':
                case 'Z':
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                case '8':
                case '9':
                    return true;
                default:
                    return false;
            }
        }
    

    用法是这样的:

    if( logicalId.All(c => CheckAllowedChars(c)))
     { // Do your stuff here.. }
    

相关问题