Algoritmo para Validar RUT

Para validar de forma estricta el RUT, usado por ejemplo en Chile, que no permite ni puntos ni guiones, se pueden usar estos algoritmos. Los dejo en dos lenguajes javascript para validar en cliente y vb.net para validar en servidor.

 

function validar(codigo)
{
		var rut; //lng
		var bRet=false;
        var digitoControl="";//str

       try {

            bRet = false;
            codigo = codigo.toUpperCase().trim();

            var largo=parseInt(codigo.length,10);
			var ultimo=parseInt(largo-1,10);
            

            //Si tiene menos de 8 caractéres es incorrecto
            if (largo < 6 || largo > 12) { return false;}
			for(var i=0;i<ultimo;i++)
			{
				var c= codigo.charCodeAt(i);
				if (i<ultimo){if (c<48 || c>57){return false;}}
				else{if (c<48 && c>57 && c != 75){return false;}}
				
			}
           
			rut= codigo.substring(0,ultimo).toString();
            var digitoControlEsperado=codigo.substring(codigo.length-1, codigo.length).toString();
           
            digitoControl = RutDigito(rut).toString();

            if(digitoControl == digitoControlEsperado ){bRet=true;}

        }
		catch(err) {
					bRet = false;
		}
		return bRet

}

 function RutDigito(T) {
     var M=0,S=1;
     for(;T;T=Math.floor(T/10))
        S=(S+T%10*(9-M++%6))%11;
     return S?S-1:'K';
  }

Para validar con VB se puede usar este:

  Public Function VerificaRUTChile(ByVal codigo As String) As Boolean
        Dim rut As Long
        Dim bRet As Boolean
        Dim digitoControl As String

        Try

            bRet = False
            codigo = codigo.Trim.ToUpper

            Dim largo As Integer = codigo.Length
            Dim penultimo As Integer = largo - 2
            Dim ultimo As Integer = largo - 1

            'Si tiene menos de 8 caractéres es incorrecto
            If (largo < 6 Or largo > 12) Then Return False

            For i As Integer = 0 To ultimo
                Dim c As Char = CChar(codigo.Substring(i, 1))

                If i < ultimo Then
                    'Solo admite numeros antes del ultimo caracter
                    If Asc(c) < 48 Or Asc(c) > 57 Then Return False
                Else
                    'Solo admite numeros o K mayúscula en el digito de control.
                    If (Asc(c) < 48 And Asc(c) > 57) And (Asc(c) <> 75) Then Return False 'K
                End If

            Next

            rut = CType(codigo.Substring(0, codigo.Length - 1), Long)
            Dim digitoControlEsperado As String = Right(codigo, 1)

            digitoControl = RutDigito(rut)

            If digitoControl = digitoControlEsperado Then
                bRet = True
            End If

        Catch ex As Exception
            bRet = False


        End Try
        Return bRet

    End Function

    Private Function RutDigito(ByVal Rut As Long) As String
        Dim Digito As Long
        Dim Contador As Long
        Dim Multiplo As Long
        Dim Acumulador As Long

        Contador = 2
        Acumulador = 0
        While Rut <> 0
            Multiplo = (Rut Mod 10) * Contador
            Acumulador = Acumulador + Multiplo
            Rut = Rut \ 10
            Contador = Contador + 1
            If Contador = 8 Then
                Contador = 2
            End If
        End While
        Digito = 11 - (Acumulador Mod 11)
        RutDigito = CStr(Digito)
        If Digito = 10 Then RutDigito = "K"
        If Digito = 11 Then RutDigito = "0"
    End Function

Sintaxis resaltada Javascript y CSS en Android Studio

En la versión gratuira de Android Studio no existe un asociación de ficheros hacia javascript ni a hojas de estilos. Por tanto, cuando nos toca escribir en ese entorno, con dichos lenguajes, tenemos que escribirlo sin ningun resaltado ni ayuda de ningún tipo. Esto puede pasar para programadores de Phonegap/Cordova sobre AS.

Si no te gusta escribir en el bloc de notas y no quieres tener abierto a la vez, AS con Sublime Text o similares, puedes añadir un plugin a AS, que se encargue de decorarnos el código.

A mano con el editor

Una opción es hacerlo a manita, desde AS, en File -> Settings -> FileTypes y creando tanto en JS como el CSS, añadiendo una a una, todas las palabras reservadas.


settings

js

js2

 

A mano editando el XML de configuración

Puedes crear tu propio XML de configuración e importarlo desde File->Import Settings.

Estos ficheros se encontrarán en la ruta de Android Studio, en su carpeta config.

Tendrá un aspecto similar a este:

<?xml version="1.0" encoding="UTF-8"?>
<filetype binary="false" default_extension="" description="Javascript" name="Javascript">
  <highlighting>
    <options>
      <option name="LINE_COMMENT" value="//" />
      <option name="COMMENT_START" value="/*" />
      <option name="COMMENT_END" value="*/" />
      <option name="HEX_PREFIX" value="" />
      <option name="NUM_POSTFIXES" value="" />
      <option name="HAS_BRACES" value="true" />
      <option name="HAS_BRACKETS" value="true" />
      <option name="HAS_PARENS" value="true" />
      <option name="HAS_STRING_ESCAPES" value="true" />
    </options>
    <keywords keywords="break;case;catch;continue;debugger;default;delete;do;else;finally;for;function;if;in;instanceof;new;return;switch;this;throw;try;typeof;var;void;while;with" ignore_case="false" />
  </highlighting>
  <extensionMap>
    <mapping ext="js" />
  </extensionMap>
</filetype>

Importar librerías ya hechas

Si no quieres escribirte tu propio plugin, puedes obtener alguno de los que hay en la red, por ejemplo.

Libreria js y css para Android Studio de peter-schmalfeldt

Escrito por peter-schmalfeldt y que aceptará gustoso colaboraciones.

Antes y después

Para que se vea claro, pongo dos imágenes del mismo código antes y despues. Hemos ganado.

Antes

ejemplo2
 

Despues

ejemplo