Formatear Rut Chileno en C#

A continuación les dejo un método  para formatear ruts.

public string formatearRut(string rut)
{
   int cont = 0;
   string format;
   if (rut.Length == 0)
   {
      return "";
   }
   else
   {
      rut = rut.Replace(".", "");
      rut = rut.Replace("-", "");
      format = "-" + rut.Substring(rut.Length - 1);
      for (int i = rut.Length - 2; i >= 0; i--)
      {
          format = rut.Substring(i, 1) + format;
          cont++;
          if (cont == 3 && i != 0)
          {
             format = "." + format;
             cont = 0;
          }
      }
      return format;
    }
}

la forma de utilizarlo mas común sería en el evento validate de una caja de texto como se muestra a continuación:


private void txtRut_Validated(object sender, EventArgs e)
{
   txtRut.Text = formatearRut(txtRut.Text);

}

Saludos

También te podría gustar...

5 Respuestas

  1. 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!

  2. Andres dice:

    Me sirvió, gracias.

  3. Modifique mis funciones en VB.Net tomando algo de la tuya… Yo uso estas dos tanto como darle formato al RUT como para sacarle los puntos y el guion. Esperando que les sirva.

    Friend Function SacaPuntoR(ByRef Rute As String) As String
    Dim RutSin As String = «»
    If Rute «» Then
    Rute = Rute.ToUpper()
    Rute = Rute.Replace(«.», «»)
    Rute = Rute.Replace(«-«, «»)
    End If
    RutSin = Rute
    Return RutSin
    End Function
    *********************************************************************************
    Friend Function PonePuntoR(ByRef Rute As String) As String
    Dim res As String = SacaPuntoR(Rute)
    If Rute «» Then
    Dim Lar As Integer = 9 – Rute.Length
    Dim Ceros As String = StrDup(Lar, «0»)
    Rute = Ceros & Rute
    res = Mid(Rute, 1, 2) & «.» & Mid(Rute, 3, 3) & «.» & Mid(Rute, 6, 3) & «-» & Mid(Rute, 9, 1)
    PonePuntoR = res
    End If
    PonePuntoR = res
    End Function

  4. ¿Puedo ocuparlo en mi trabajo verdad?

Deja una respuesta

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