识别字符串内容并验证

时间:2018-11-13 13:56:11

标签: c#

我对C#还是很陌生,

如果您愿意,我正在做一个“迷你用户名检查器”

到目前为止,用户名是2个数字,后跟一个名称,

示例

13Samuel

,也可以键入

13samuel

我想做的是检测前两个字符是否在0到99之间的数字,然后检测第三个字符是否是字母(a-z)小写字母或大写字母。

感谢您阅读,

塞缪尔

5 个答案:

答案 0 :(得分:3)

肯定有一个正则表达式方法,但是有了字符串方法和LINQ,imo更加易于阅读:

string name = "13Samuel";
bool valid = name.Length > 2 && name.Remove(2).All(char.IsDigit) && char.IsLetter(name[2]);

或者您可能只允许a-z和A-Z而不允许所有字母:

// store this in a field so that it doesn't always need to be generated 
char[] allowed = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".SelectMany(c => new[]{c, char.ToLower(c)}).ToArray(); 

bool valid = name.Length > 2 && name.Remove(2).All(char.IsDigit) && allowed.Contains(name[2]);

答案 1 :(得分:1)

如果要检查前两个字母在 0到99 之间,然后是字符,则可以尝试以下操作

    string name = "13Samuel";

    if(name.Length > 2)
    {
        int number;
        if(Int32.TryParse(name.Substring(0,2), out number)){
            Console.WriteLine(number > 0 && number < 99 & Char.IsLetter(name[2]) ? "Success" : "Failed");
        }

    }

POC:。Net Fiddler

答案 2 :(得分:1)

I was editing a previous post but it was removed.

You can use regex to match strings to formats

For example :

Regex regex = new Regex(@"[\d]{2}[a-zA-Z]+");
    Match match = regex.Match(username);
    if (match.Success)
    {
        //it is valid
    }

for this regex "[\d]{2}" means 2 digits and [a-zA-Z]+ is any number of letters from the alphabet.

You can check the documentation for more info on how to use regex in C#: https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex?view=netframework-4.7.2

答案 3 :(得分:0)

以下方法返回您的字符串是否有效:

public static bool validateString(string stringToValidate) {
    Regex rgx = new Regex(@"^\d{1,2}[a-zA-Z]+$");
        return rgx.Match(stringToValidate).Success;
    }

说明:

^-标记字符串的开头

\ d-匹配0-9之间的所有数字

{1,2}-数字可能出现1-2次

[a-zA-Z]-匹配a-z和A-Z中的所有文字

+-一次或多次匹配文字

您可以查看文档以获取有关C#中正则表达式的更多信息: https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex?view=netframework-4.7.2

答案 4 :(得分:0)

去那里:

using System.Text.RegularExpressions;
    static bool Answer(string stringToTest)
    {
        var classifier = @"^\d\d[a-zA-Z]";
        Regex regex = new Regex(classifier);
        return regex.Match(stringToTest).Success;
    }

所以请记住使用正则表达式 您可以使用https://regex101.com/测试分类器