Ferramentas de Usuário

Ferramentas de Site


dev_net:vb.net:operadorlike

O Operador LIKE

Introdução

A validação de campos é um processo essencial em qualquer aplicação. É importante determinar se o utilizador introduz os dados correctamente e para tal, o programador terá que prevêr uma série de situações que podem ocorrer. Existem muitas formas de proceder a estas verificações, umas mais simples que outras. O operador LIKE é, no mínimo, mais um reforço aliado à batalha contra a má validação de campos.

Como?

O operador LIKE opera sobre uma String. A String é comparada com um padrão fornecido para determinar se todos os caracteres da String se encontram em conformidade com o padrão. Uma operação com LIKE devolve-nos um Boolean, determinando assim se a String se encontra de acordo com o padrão fornecido (True) ou não (False)

As opções do padrão

O padrão de comparação pode conter qualquer caractere e ainda as seguintes opções:

OpçãoExplicaçãoExemplo
*Sequência indeterminada de quaisquer caracteresJoão *
?Qualquer caractereImagem.???
#Qualquer caractere numérico (0 a 9)Número #
[caracteres]Um caractere incluí caracteres desta lista de caracteres[aeiou]
[!caracteres]Um caractere não incluí caracteres desta lista de caracteres[!aeiou]
[letra-letra]Um caractere incluí caracteres de uma letra até outra. Múltiplos alcances suportados[a-zA-Z][A-Z]#
[!letra-letra]Um caractere não incluí caracteres de uma letra até outra. Múltiplos alcances suportados[a-uA-U][x-zX-Z]#
A aplicação do padrão com caracteres é "Case-sensitive"

Exemplos

Para melhor entender o operador LIKE, copie o seguinte bloco de código e substitua por todo o código de uma form num projecto novo. Irá obter uma mensagem com todos os pareceres das comparações. O seguinte código cria uma lista de strings para ir de seguida correr todas as comparações por cada item, determinando assim em que validações é que essa string passa. Este exemplo visa a utilizar o maior número de variações do padrão possíveis de forma a demonstrar o seu poder.

Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim L As New ListBox
 
        L.Items.Add("HAF55C5")
        L.Items.Add("XT3")
        L.Items.Add("ZX2")
        L.Items.Add("AB1")
        L.Items.Add("Fotografia000112.jpg")
        L.Items.Add("Fotografia000278.jpeg")
        L.Items.Add("(+351)934511497")
        L.Items.Add("937359841")
        L.Items.Add("PT50 0032 0000 5147 0148 9715 6")
        L.Items.Add("0033 0000 21280037136 63")
        L.Items.Add("13:33:37")
        L.Items.Add("07/01/1986")
        L.Items.Add("07/Jan/1986")
        L.Items.Add("07 de Janeiro de 1986")
 
        Dim Resultados As String = ""
 
        For Each LI As String In L.Items
 
            If (LI Like "(+###)#########") OrElse (LI Like "#########") = True Then
                Resultados &= LI & " passa por número de telefone" & vbCrLf
            End If
 
            If LI Like "Fotografia######.*" = True Then
                Resultados &= LI & " passa por formato de nome de fotografia" & vbCrLf
            End If
 
            If LI Like "??#" = True Then
                Resultados &= LI & " passa por código de 3 caracteres com o último numérico" & vbCrLf
            End If
 
            If LI Like "H[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]" = True Then
                Resultados &= LI & " passa por número hexadecimal" & vbCrLf
            End If
 
            If LI Like "#### #### ########### ##" = True Then
                Resultados &= LI & " passa por NIB" & vbCrLf
            End If
 
            If LI Like "[A-Z][A-Z]## #### #### #### #### #### #" = True Then
                Resultados &= LI & " passa por IBAN" & vbCrLf
            End If
 
            If LI Like "##/##/##" = True Then
                Resultados &= LI & " passa por data" & vbCrLf
            End If
 
            If LI Like "##:##:##" = True Then
                Resultados &= LI & " passa por hora" & vbCrLf
            End If
 
            If LI Like "## de * de ####" = True Then
                Resultados &= LI & " passa por data por extenso" & vbCrLf
            End If
 
            If LI Like "[A-Z]*" = True Then
                Resultados &= LI & " está capitalizado" & vbCrLf
            End If
 
            If LI Like "[XZF]*" = True Then
                Resultados &= LI & " contém X, Z ou F no seu primeiro caractere" & vbCrLf
            End If
 
            If LI Like "[!XZF]*" = True Then
                Resultados &= LI & " não contém X, Z ou F no seu primeiro caractere" & vbCrLf
            End If
        Next
 
        MsgBox(Resultados)
 
    End Sub
 
End Class
dev_net/vb.net/operadorlike.txt · Última modificação em: 2018/05/14 21:37 (edição externa)