Validador de Rut Chileno en C#

El siguiente método permite validar un Rut Chileno, retornando true en caso de ser válido y false en caso de ser incorrecto.


  public bool validarRut(string rut ) {
            
     bool validacion = false;
     try {
        rut =  rut.ToUpper();
        rut = rut.Replace(".", "");
        rut = rut.Replace("-", "");
        int rutAux = int.Parse(rut.Substring(0, rut.Length - 1));

        char dv = char.Parse(rut.Substring(rut.Length - 1, 1));

        int m = 0, s = 1;
        for (; rutAux != 0; rutAux /= 10) {
           s = (s + rutAux % 10 * (9 - m++ % 6)) % 11;
        }
        if (dv == (char) (s != 0 ? s + 47 : 75)) {
           validacion = true;
        }
     } catch (Exception) {
     }
     return validacion;
  }

Esperamos sea de su utilidad

También te podría gustar...

51 Respuestas

  1. Ariel dice:

    Muchas gracias todo ok

  2. Fer dice:

    Excelente, muchas gracias amigo me funciono perfect.- saludos..

  3. Ignacio dice:

    Consulta, tengo un problema si el rut es 5.555.555-5, quiero decir si tiene largo 8 en vez de 9, en que parte del codigo tendria que hacer el cambio para que acepte de las 2 formas? gracias!

  4. mario dice:

    el método devuelve rut valido si es con guion o sin guion como puedo modificarlo para que devuelva verdadero si ingreso solo este formato 12345678-9

  5. Boris Guinez dice:

    Muchas Gracias.

    Me sirvio la logica de tu codigo.

    Lo modifique para meterlo dentro de la clase modelo en asp mvc 5

    A lo mejor le puede servir a alguien— aca va.

    public IEnumerable Validate(ValidationContext ValidationContext)
    {
    var errores = new List();

    //bool validacion = false;
    try
    {
    Rut = Rut.ToUpper();
    Rut = Rut.Replace(«.», «»);
    Rut = Rut.Replace(«-«, «»);
    int rutAux = int.Parse(Rut.Substring(0, Rut.Length – 1));

    char dv = char.Parse(Rut.Substring(Rut.Length – 1, 1));

    int m = 0, s = 1;
    for (; rutAux != 0; rutAux /= 10)
    {
    s = (s + rutAux % 10 * (9 – m++ % 6)) % 11;
    }
    if (dv == (char)(s != 0 ? s + 47 : 75))
    {
    //validacion = true;

    }
    else
    {
    errores.Add(new ValidationResult(«El Rut no es valido», new string[] { «Rut» }));
    }
    }
    catch (Exception)
    {
    }
    return errores;

  6. frank dice:

    si le mando como parámetro 4324 me devuelve que el rut es válido, creo que hay que hacer una correción ahí

  7. Andres Ibarra dice:

    Estimados como utilizo este codigo en un windows form con un text box y un boton??? desde ya muchas gracias

  8. Brian dice:

    Hola, me arroja un error en char.Parse, alguna sugerencia?

Deja una respuesta

Tu dirección de correo electrónico no será publicada.