es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Validando Número de Identificación C#

Estoy trabajando en este método que valida el número de identificación de un estudiante. Las credenciales del número de identificación son: el primer carácter debe ser 9, el segundo carácter debe ser un 0, no puede haber ninguna letra y el número debe tener 9 caracteres de longitud. El método devolverá true si el número de identificación del estudiante es válido. Cuando pruebo el método manualmente a través de main, siempre devuelve true, incluso cuando ingreso un valor incorrecto. En mi código, tengo las declaraciones if anidadas, pero originalmente no las tenía anidadas. ¿Cuál es una mejor manera de validar la entrada para que se ajuste a las credenciales del número de identificación? ¿Sería más conveniente convertir la cadena en un arreglo?

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.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hay algunas mejoras que se pueden hacer a la implementación actual del método ValidateStudentId.

    En primer lugar, en lugar de utilizar declaraciones if anidadas, sería mejor utilizar una serie de operadores lógicos AND (&&) para verificar todas las condiciones. Esto resultaría en un código más limpio y conciso.

    En segundo lugar, no es necesario convertir la cadena en un arreglo para esta validación en particular. El uso de expresiones regulares (como en la implementación actual) es un enfoque adecuado para validar cadenas.

    Aquí está una implementación actualizada del método ValidateStudentId:

    public static bool ValidateStudentId(string stdntId)
    {
        if (stdntId.Length != 9)
        {
            return false;
        }
        if (stdntId[0] != '9' || stdntId[1] != '0')
        {
            return false;
        }
        if (Regex.IsMatch(stdntId, @"^[a-zA-Z]+$"))
        {
            return false;
        }
    
        return true;
    }
    

    Esta implementación primero verifica si la longitud de la cadena de entrada es 9. Si no es así, devuelve falso. Luego verifica si los dos primeros caracteres son ’90’. Si no lo son, devuelve falso. A continuación, utiliza una expresión regular para verificar si hay alguna letra en la cadena. Si las hay, devuelve falso. Finalmente, si todas las comprobaciones se pasan, devuelve verdadero.

    El uso de esta implementación proporcionaría una validación más precisa de la entrada y eliminaría los problemas con las declaraciones if anidadas.

Comments are closed.