Visual Basic em Português

Página pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia

Operador Like

Este poderá parecer um artigo bastante simples sobre Visual Basic e até é na verdade, mas a realidade é que muito programadores ou aspirantes a programadores de Visual Basic não utilizam determinadas funcionalidades, acredito que por desconhecimento, que podem simplificar bastante o código.

O operador Like não está disponível no C# e pode ser substituído pela utilização de Expressões Regulares (Regular Expressions). No entanto, embora as expressões regulares sejam muito mais poderosas e versáteis, pequenas validações podem ser feitas mais facilmente usando este operador.

O operado Like é um dos operadores de comparação disponíveis no Visual Basic assim como o = (igual), <= (menor ou igual), >= (maior ou igual), <> (diferente), Is e IsNot. Os operadores de comparação, como deve ser do vosso conhecimento, devolvem um resultado booleano (true ou false).

resultado = texto like mascara

O seguinte exemplo mostra a utilização do operador Like:

Dim local As String = "Lisboa"
Dim resultado As Boolean = local Like "Lisboa"
' Resultado: resultado = True

O resultado da expressão indicada (local Like “Lisboa”) é True.

É um exemplo bastante simples e que até poderia ser utilizado o operador = (igual) pois está a validar se uma string é igual a outra string, mas a vantagem de utilizarmos o operador Like é que nos permite também utilizar wildcards para a mascara de validação.

Existem três wildcards que podemos utilizar:

  • “*” – Substitui um grupo de caracteres
  • “?” – Substitui um caractere
  • “#” – Substitui um dígito

Alguns exemplos utilizando o wildcard asterisco (*) e respectivos resultados:

Dim word As String = "Revista Programar"

Console.WriteLine(word Like "*Programar")
' Resultado: True

Console.WriteLine(word Like "*ista*")
' Resultado: True

Console.WriteLine(word Like "*Revista")
' Resultado: False

Agora usando o wildcard ponto de interrogação (?)
 
Dim word As String = "VB.NET"

Console.WriteLine(word Like "VB.NE?")
' Resultado: True

Console.WriteLine(word Like "VB.?")
' Resultado: False

Console.WriteLine(word Like "VB.???")
' Resultado: True

E finalmente usando o wildcard cardinal (#):
Dim cod As String = "2900-110"

Console.WriteLine(cod Like "2900-11#")
' Resultado: True

Console.WriteLine(cod Like "2900-#")
' Resultado: False

Console.WriteLine(cod Like "2900-###")
' Resultado: True

Um exemplo conjugando vários wildcards, de modo a mostrar uma validação mais complexa poderá ser:

Dim artigo As String = "PT-AB1234"

If artigo Like "*-??####" Then
Console.WriteLine("Artigo válido")
End If

Nesta validação, que nos dá um resultado verdadeiro, estamos a garantir que o artigo inicia por um texto qualquer (*), seguido de um hífen (-), tendo de seguida dois caracteres alfanuméricos (??) e três números (###).

Mas existem ainda mais formas de usar o operador Like. Podemos definir, entre parênteses rectos, que letras são permitidas na substituição ou entre que intervalos são permitidos usar. Podemos também definir múltiplos intervalos entre os parênteses rectos.

É importante ter em atenção a distinção entre maiúsculas e minúsculas e, no caso de intervalos, definir da primeira letra para a última (de acordo com a ordem do abecedário).

Alguns exemplos para que entenda melhor:  

Dim r = "Revista" Like "Revist[aeiou]"
' Resultado: True

Neste caso a última letra da palavra “Revista” está entre as permitidas nesta validação [aeiou], por isso o resultado é verdadeiro.

Dim r = "Revista" Like "[a-z]evista"
' Resultado: False

O resultado é falso pois a primeira letra da palavra “Revista” não está entre as letras a e z pois esta encontra-se em maiúsculas (“R”).

Dim r = "Revista" Like "[RV]evist[a-c]"
' Resultado: True

Neste exemplo o resultado é verdadeiro pois a primeira letra é um “R” ou “V” e a última é um “a”, “b” ou “c”.

Podemos ainda usar da mesma forma, excluindo determinados caracteres, através da indicação de um ponto de exclamação, ou seja:

Dim r = "Revista" Like "Revist[!abc]"
' Resultado: False

Ou seja, nesta validação estamos a verificar se a última letra não é um “a”, “b” ou “c” (através de [!abc]), o que torna a expressão falsa pois “Revista” termina em “a”.

Para terminar e para mostrar que podemos usar várias combinações, vamos validar:

  1. Se temos no início da palavra uma letra em minúsculas ou a letra “R” - [a-zR]
  2. Que a segunda letra não é um “a” – [!a]
  3. Que a ultima letra é um “a”, “b” ou “c” – [a-c]

Usamos ainda wildcards para outras validações já referidas anteriormente.

Dim r = "Revista" Like "[a-zR][!a]vis?[a-c]*"
' Resultado: True

Por predefinição o modelo de comparação de strings está definido como binário (Option Compare Binary). Desta forma o intervalo [A-E] valida as letra A, B, C, D e E. Se alterarmos o modelo de comparação para texto (Option Compare Text) então o mesmo intervalo valida maiúsculas e minúsculas.

Option Compare Text

Module Module1

Sub Main()

Dim r = "ÀeIÓu" Like "àeióu"
' Resultado: True

End Sub

End Module

O operador Like permite também o seu overloading, à semelhança de outros operadores, alterando desta forma o seu comportamento.

Conclusão

O operador Like é um operador de comparação que permite validar expressões utilizando mascaras, um pouco à semelhança das Regular Expressions, embora muito mais limitado. No entanto, para muitas validações, pode ser uma opção bastante válida e simples de implementar.

Este artigo, entre muitos outros, está disponível na Revista PROGRAMAR, Edição 40 de Abril de 2013


Revista PROGRAMAR Edição 40 - Abril de 2013

Imagem Colocada
(clica para download)

Nesta edição continuaremos também a premiar os autores dos três melhores artigos, dado o sucesso nas edições anteriores. E os leitores devem dar a sua opinião para que possamos premiar correctamente. Para isso vote emhttp://tiny.cc/ProgramarED40_V

Assim nesta edição trazemos até si, como artigo de capa, um artigo sobre Estruturas vs Objetos de Rita Peres. Nesta 40ª edição pode ainda encontrar os seguintes artigos:

  • Lua - Linguagem de Programação (Augusto Manzano)
  • Introdução à Windows Workflow Foundation (Fábio Domingos)
  • P vs NP (Miguel Araújo)
  • C# - Trazendo Async E Await ao Serviço de Contactos do Windows Phone (Paulo Morgado)
  • Visual(not)Basic - Operador Like (Jorge Paulino)
  • Core Dump - A documentação é algo imprescindível (Fernando Martins)
  • II Mega Mostra IPVC
  • Jquery: A sua biblioteca de Javascript (Bruno Almeida)
  • Mathlab Curso Completo (Nuno Santos)
  • Desenvolvimento de Aplicações em PHP (António Santos)
  • NetPonto - Página avançada “sobre” para aplicações Windows Phone (Sara Silva)
  • Raspberry Pi - Pequeno mas grande (Rita Peres)
  • SEO - Keywords Parte I (Miguel Lobato)
  • Crianças Digitais (Sara Santos)
  • Entrevista a Rui Guimarães
  • Projecto em Destaque na Comunidade Portugal-a-Programar: Sueca Online

Revista PROGRAMAR Edição 39 - Fevereiro de 2013

Imagem Colocada
(clica para download)

Nesta edição continuaremos também a premiar os autores dos três melhores artigos, dado o sucesso nas edições anteriores. E os leitores devem dar a sua opinião para que possamos premiar correctamente. Para isso vote em http://tiny.cc/ProgramarED39_V

Assim nesta edição trazemos até si, como artigo de capa, um artigo de Windows 8 Store Apps - Do sonho à realidade de Sara Silva. Nesta 39ª edição pode ainda encontrar os seguintes artigos:

  • Threads, Semáforos e Deadlocks - O Jantar dos Filósofos (Rita Peres)
  • Programação em OpenCL (Patricio Domingues)
  • Accionamento de Servos Usando Arduino  (Nuno Santos)
  • A web em tempo real na plataforma ASP.NET (Ricardo Rodrigues)
  • Bubble Sort - A Técnica da Bolha (Telmo Vaz)
  • C# GeoCoordinateWatcher como um Serviço Reativo (Paulo Morgado)
  • Review do livro Visual Basic 2012: Curso Completo (Sérgio Ribeiro)
  • Review do livro Multimédia e Tecnologias Interactivas (Sérgio Laranjeira)
  • Certificação Microsoft (Sara Silva)
  • Programar - Como começar?   (António Pedro Cunha)
  • Novidades de Sharepoint 2013 (André Vala)
  • SEO Parte 4 (Miguel Lobato)
  • Entrevista a Miguel Gonçalves
  • Projecto em Destaque na Comunidade Portugal-a-Programar: PROGRAMAR

SAP Crystal Reports já disponível para o Visual Studio 2012

Já estão disponíveis os Crystal Reports para o Visual Studio 2012, agora com a designação “SAP Crystal Reports, developer version for Microsoft Visual Studio – 2012”.

Esta versão permite a integração com o Visual Studio 2012 e o .NET Framework 4.5, suportando também o Window 7, Windows 8 e Windows 2012.

Mais informações e download: http://scn.sap.com/docs/DOC-35074


Mensagens Recentes



Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico