Search code examples
c#stringvalidationif-statementboolean-expression

Validating ID Number C#


I am working on this method that validates a student Id number. The credentials of the ID number are; the first character has to be 9, the second character has to be a 0, there can not be any letters, and the number must be 9 characters long. The method will return true if the student id is valid. When I go to test the method manually through main it comes out as true, even when I put in a wrong input. In my code, I have the if statements nested, but I originally did not have them nested. What is a better way to validate the input to align with the credentials of the ID number? Would converting the string into an array be more ideal?

 public static bool ValidateStudentId(string stdntId)
        {
            string compare = "123456789";
            if (stdntId.StartsWith("8"))
            {
                if (stdntId.StartsWith("91"))
                {
                    if (Regex.IsMatch(stdntId, @"^[a-zA-Z]+$"))
                    {
                        if (stdntId.Length > compare.Length)
                        {
                            if (stdntId.Length < compare.Length)
                            {
                                return false;
                            }
                        }
                    }
                }
            }

screenshot of my main. The method was made in a class called student.


Solution

  • You can try regular expressions:

    public static bool ValidateStudentId(string stdntId) => stdntId != null &&
      Regex.IsMatch(stdntId, "^90[0-9]{7}$");
    

    Pattern explained:

      ^        - anchor - string start 
      90       - digits 9 and 0
      [0-9]{7} - exactly 7 digits (each in [0..9] range) 
      $        - anchor - string end
    

    So we have 9 digits in total (90 prefix - 2 digits + 7 arbitrary digits), starting from 90