Este 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();
	}
}

2 Responses to “Cálculo Dígito Verificador RUT”
  1. Jorge Salinas says:

    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.

  2. Gracias por la correción que ya fue aplicada porque C# es sensible a mayúsculas y minúsculas.

  3.  
Leave a Reply