Valida rut Chileno con c#, basado el algoritmo modulo 11
/// <summary>
/// Validador de RUT Chileno
/// Hace uso del algoritmo Modulo 11
///
/// Chilean ID Number validator
/// Use the algorithm called Module 11
/// </summary>
class Rut {
/// <summary>
/// Metodo de validación de rut con digito verificador
/// dentro de la cadena
/// </summary>
/// <param name="rut">string</param>
/// <returns>booleano</returns>
public static bool ValidaRut(string rut) {
rut = rut.Replace(".", "").ToUpper();
Regex expresion = new Regex("^([0-9]+-[0-9K])$");
string dv = rut.Substring(rut.Length - 1, 1);
if (!expresion.IsMatch(rut)) {
return false;
}
char[] charCorte = { '-' };
string[] rutTemp = rut.Split(charCorte);
if (dv != Digito(int.Parse(rutTemp[0]))) {
return false;
}
return true;
}
/// <summary>
/// Método que valida el rut con el digito verificador
/// por separado
/// </summary>
/// <param name="rut">integer</param>
/// <param name="dv">char</param>
/// <returns>booleano</returns>
public static bool ValidaRut(string rut, string dv) {
return ValidaRut(rut + "-" + dv);
}
/// <summary>
/// método que calcula el digito verificador a partir
/// de la mantisa del rut
/// </summary>
/// <param name="rut"></param>
/// <returns></returns>
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();
}
}
}