domingo, 5 de abril de 2015

Uso de Regular Expressions en VB 2010

Uno de los problemas más habituales a la hora de trabajar con información es mantener la calidad de la misma, haciendo que todos los usuarios indiquen los mismos datos de la misma forma. Uno ejemplo muy claro de esto es el dato del NIF o CIF que cada cual tiende a escribir de diversas maneras, empleando guiones, sin guiones, puntos etc.

Vamos a intentar, con nuestro código, validad ese NIF suponiendo que la forma sea NNNNNNNN-L es decir, ocho números y una letra separados por un símbolo de guión. Y lo vamos a hacer empleando Regular Expressions. ¿Qué es esto? Pues  se trata de una clase que implementa una serie de objetos con los que podremos validar los datos de una forma sencilla.


Para poder usarlos tendremos que traer a nuestro proyecto VB 2010 este espacio de nombres:

Imports System.Text.RegularExpressions

Y ahora tenemos que construír dos objetos, por un lado el Regex que es una forma de llamar a la "plantilla" que tienen que cumplir los datos (vamos, poner en VB nuestro NNNNNNNN-L). Para ello me ayudo de la MSDN que me explica como he de construir el objeto y las formas de uso de las expresiones soportadas.


Para nuestro proyecto añadiremos unas textbox y un button que será desde donde dispararemos nuestro validador.

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Try
            MessageBox.Show(ValidarNIF(TextBox2.Text))
        Catch ex As Exception

        End Try
End Sub

Function ValidarNIF(ByVal nif As String) As Boolean
        Dim nifregex As New System.Text.RegularExpressions.Regex("^[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[-]+[A-Z]")
        Dim nifenc As System.Text.RegularExpressions.Match = nifregex.Match(nif)
        Return nifenc.Success
End Function

La expresión Regex que constituye la plantilla es (según lo explicado en la MSDN) una cadena que comienza con un número entre 0 y 9 seguido de otros 7 números entre ceros y nueves más un guión más una letra entre A y Z. El objeto nifenc ejecuta el método Match que es que que verifica que el parámetro "nif" cumple la expresión dada.

Finalmente retornamos Success que es un boleano que nos dice si es correcto o no.

En la sección de descargas de Polygon-e os pondremos el código completo para descarga.

No hay comentarios:

Publicar un comentario