Sep
19
2008


Cálculo Dígito Verificador RUT
Escrito por Mauricio Orizola en Profesionales de las TecnologíasEste algoritmo ya es muy conocido pero no está demás recordarlo para quienes aún no lo han implementado. A continuación presento en C# la clase Rut con los siguientes métodos públicos y estáticos (no se necesita crear una instancia de la clase para usarla):
- Valido: recibe un Rut como cadena incluyendo el guión y digito verificador (“99999999-9”) devolviendo verdadero si el Rut es correcto.
- Digito: recibe un Rut como entero sin incluir el dígito verificador (99999999) devolviendo este último como cadena.
public class Rut { public static bool Valido(string rut) { rut = rut.Replace(".", "").ToUpper(); Regex r = new Regex("^([0-9]+-[0-9K])$"); if (r.IsMatch(rut)) return rut.Substring(rut.Length - 1, 1) == Digito(int.Parse(rut.Substring(0, rut.Length - 2))); else return false; } public static string Digito(int rut) { int suma = 0; int multiplicador = 1; while (rut != 0) { multiplicador++; if (multiplicador == 8) multiplicador = 2; suma += (rut % 10) * multiplicador; rut = rut / 10; } suma = 11 - (suma % 11); if (suma == 11) return "0"; else if (suma == 10) return "K"; else return suma.ToString(); } } |
Se agradece la clase es muy util, el unico alcance es que en la linea:
return rut.Substring(rut.Length – 1, 1) == digito(int.Parse(rut.Substring(0, rut.Length – 2)));
digito debiera empezar con una D mayuscula.
Muchas gracias de nuevo.
Gracias por la correción que ya fue aplicada porque C# es sensible a mayúsculas y minúsculas.