Trabalhando Strings no Visual Basic
O que é uma string ? R: Uma string pode ser concebida como uma cadeia de caracteres , ou seja , uma sequência de caracteres. Ficou ainda um pouco vago não é mesmo ?
Ora , vamos tentar novamente : Para o Visual Basic , uma string é um texto que pode ser composto de uma sequência de nenhum ou mais de um caracter . Assim, uma string pode ser composta por caracteres alfabéticos , caracteres numéricos e/ou símbolos.
Exemplos de strings : "José Carlos" , "28 de julho" , "16/08/2001" , "11111" , " " , " $51a" , "abc*=" , ""
Cada caractere de uma string é representado por um valor numérico chamado - código de caractere , ou , código ASCII . A faixa de valores vai de 0 a 255 .
Para ver os valores de 0 a 127 clique aqui : Tabela 1 - ASCII
Para ver os valores de 128 a 255 clique aqui : Tabela 2 - ASCII
Para gerar a lista completa no seu Visual Basic , o código é :
Dim i as integer
For i=0 to 255 debug.Print i ; " - " ; CHR$(i) Next |
Geralmente declaramos uma string usando a instrução Dim e o tipo de dados string. Ex: Dim variavel As String
Nota: Podemos usar o simbolo ($) no final do nome da variável para indicar que se trata de uma variável string. Por exemplo : Dim variavel$ , indica que declaramos uma variável do tipo String.
As strings podem ser armazenadas em variáveis declaradas como do tipo String ou Variant e podem também ser representadas por valores constantes.
Exemplo :
Dim nome as string nome = "José Carlos Macoratti" Debug.Print nome |
irá imprimir : José Carlos Macoratti |
Para colocar aspas (") dentro de uma string devemos usar aspas duas vezes ou aspas duplas, assim :
Dim nome as string nome = "Aqui temos ""ASPAS"" " Debug.Print nome |
irá imprimir : Aqui temos "ASPAS" |
Podemos usar também o código do caractere para (") => chr(34) , assim ficamos com:
Dim nome as string nome = "Aqui temos " & chr$(34) & "ASPAS" & chr$(34) & " Debug.Print nome |
irá imprimir : Aqui temos "ASPAS" |
Nota: Vamos lembrar que a utilização da declaração Option Explicit no ínicio do seu código irá forçar você a declarar todas a variáveis . Isto pode lhe poupar de um monte de problemas. Veja: se você não usar Option Explicit e atribuir o nome Jose a variável sem usar aspas para indicar que Jose é uma string e não uma variável , ou seja : Nome = Jose o Visual Basic não irá reclamar e seu projeto irá compilar sem problemas... (sem problemas ????)
As strings podem ser declaradas como sendo de dois tipos:
1-) Strings de comprimento variável (variable-length) - Podem conter strings de 0 a 2 bilhões de caracteres e são declaradas assim:
Dim string_variavel As String
Elas sempre contém a string a elas atribuídas que podem ser de tamanhos variados , assim podemos ter:
string_variavel = " Isto é um teste de declaração de string variavel" ou
string_variavel = " Teste "
2-) Strings de comprimento Fixo (fixed-Length) - Podem conter somente a quantidade de caracteres com que foram declaradas. São declaradas atribuindo a quantidade de caracteres que poderão conter:
Dim string_fixa As string * 20
string_fixa = "Aqui cabem somente 20 caracteres"
a variavel string_fixa irá conter : "Aqui cabem somente 2"
Comparando Strings
As strings podem ser comparadas usando os seguintes operadores de comparação :
< | Menor que |
<= | Menor que ou igual a |
= | igual a |
<> | diferente de ou não igual a |
>= | Maior que ou igual a |
> | Maior que |
Ao comparar duas strings o VB compara caractere por caractere em cada string. Assim comparando :
"123ABC" com "123ACB" o VB compara os dois primeiros caracteres (1) depois os dois (2) , os dois (3) até que os caracteres sejam diferentes , então a comparação é interrompida. No caso o como o código do caractere B é (66) é menor que o código do caractere C (67) então o VB considera a string "123ABC" é menor que a string "123ACB"
Nota: a é maior de A pois o código de a é (97) enquanto que o código de A é (65)
Se a comparação ocorrer entre duas strings de tamanho diferentes: "ABC" com "ABCD" a comparação é encerrada quando não houver mais caracteres na primeira string para comparar com os caracteres da segunda string. Neste caso a string mais pequena - "ABC" - é considerada menor que a string mais longa - "ABCD" ou seja : "ABC" < "ABCD"
Usando o operador LIKE para comparar Strings
O Visual Basic 6 apresenta o operador LIKE que é utilizado para comparar duas strings. Sua sintaxe é:
resultado = string Like modelo
Parte | Descrição |
resultado | variavel numérica |
string | string de comparação |
modelo | uma expressão string conforme o a convenção definida. |
Caracteres no Modelo |
Valor comparativo na string |
? | Qualquer caractere simples |
* | Nenhum ou mais de um caractere |
# | Qualquer digito simples ( "0", ..."9") |
[charlist] | Qualquer caractere simples da lista de caracteres |
[!charlist] | Qualquer caractere simples da não presentes lista de caracteres |
Comparação |
Resultado |
"ABCD" Like "AB?D" | True |
"ABC3D" Like "ABC#D" | True |
"ABCD" Like "A???D" | False |
"A$1D" Like "A*D" | True |
Dim Compara
Compara = "aBBBa" Like "a*a"
' Retorna True.
Compara = "F" Like "[A-Z]"
' Retorna True.
Compara = "F" Like "[!A-Z]"
' Retorna False.
Compara = "a2a" Like "a#a"
' Retorna True.
Compara = "aM5b" Like "a[L-P]#[!c-e]"
' Retorna True.
Compara = "BAT123khg" Like "B?T*"
' Retorna True.
Compara = "CAT123khg" Like "B?T*"
' Retorna False.
Manipulando Strings
V
amos agora
trabalhar com strings usando as funções para tratamento de strings que o VB
nos oferece. Vale lembrar que a versão VB6 trás muitas funções novas
para tratar strings. Essas funções facilitam em muito o nosso trabalho e
podem substituir muitas linhas de código antes necessárias para obter o mesmo efeito.
I-) As funções strings básicas
Primeiro vamos mostrar as funções para tratamento de strings presentes em todas as versões do VB:
a-) Str(numero) - Converte um valor numérica em uma string do tipo Variant
Dim String |
b-) Len(string ) - Determina o número de caracteres de uma string. (o comprimento da string)
|
c-) Chr$(codigo_do_caractere) - Retorna uma string caractere associado ao código indicado
|
Para exibir os códigos de todos os caracteres de 0 a 255 use o código a seguir:
Dim i as integer
For i=0 to 255
Debug.Print i; chr$(i)
Next
d-) Asc(string) - Retorna um valor inteiro que representa o código do primeiro Caractere da String.
Dim MyNumber |
e-) Space(numero) - Retorna uma string do tipo Variant contendo a quantidade de espaços indicados por número.
String = "Visual" & Space(10) & "Basic" - insere dez espaços entre as strings Visual e Basic |
f-) String$(Tamanho,String) - Cria uma string com comprimento igual a Tamanho e que contém o primeiro caráter indicado em String. Se String tiver mais de um caractere somente o primeiro será usado.
String$(9,"VISUAL") 'retorna => "VVVVVVVVV" |
g-) Trim$(string) - Remove os espaços existentes de ambos os lados de uma string.
Dim MVar MVar = Trim(" visual basic ") 'MVar irá conter ==> "visual basic". |
h-) RTrim$(string) - Remove os espaços a direita da string.
Dim MVar MVar = RTrim(" visual basic ") 'MVar irá conter ==> " visual basic". |
i-) LTrim$(string) - Remove os espaços a esquerda da string.
Dim MVar MVar = LTrim(" visual basic ") 'MVar irá conter ==> "visual basic ". |
j-) LCase$(string) - Converte todos os caracteres alfanuméricos na string para minúsculas.
LCase("SÃO JOSE DO RIO PRETO , 12-08-2001") retorna ==> são jose do rio preto , 12-08-2001 |
l-) UCase$(string) - Converte todos os caracteres alfanuméricos na string para maiúsculas.
LCase("São Jose Do Rio Preto , 12-08-2001") retorna ==> SÃO JOSE DO RIO PRETO , 12-08-2001 |
II) Substrings
Substrings são pedaços de uma string. Veremos a seguir as principais funções para o tratamento de substrings.
a-) Left$(String, Tamanho) - Retorna uma string contendo o número de caracteres definido em Tamanho do lado esquerdo da String.
Left$("Programar com Visual Basic é
fácil",
9)
Retorna ==> "Programar"
Left$("Programar com Visual Basic é fácil", 50) Retorna ==> "Programar com Visual Basic é fácil" Left$("Programar com Visual Basic é fácil", 0) Retorna ==> "" |
b-) Right$(String, Tamanho) - Retorna uma string contendo o número de caracteres definido em Tamanho do lado direito da String.
Right$("Programar com Visual Basic é
fácil",
8) Retorna
==> " é fácil"
Right$("Programar com Visual Basic é fácil", 50) Retorna ==> "Programar com Visual Basic é fácil" Right$("Programar com Visual Basic é fácil", 0) Retorna ==> "" |
c-) Mid$(String, Inicio,[Tamanho]) - Como função retorna uma substring da String dada , começando no primeiro caractere de Inicio com comprimento definido em Tamanho. Se Tamanho for omitido ou for menor que o comprimento da string todos os caracteres a partir de inicio será retornado.
Texto = " Usando strings no Visual Basic"
Mid$(texto,7,7) retorna => "strings" Mid$(texto,7) retorna => "strings no Visual Basic" |
Podemos usar MID$ para substituir uma parte da string dada, a partir do primeiro caractere da posição Inicio.
Texto ="Isto é um teste"
Mid$(texto,6)="123456" retorna => "Isto 123456" Mid$(texto,6,3)="123456" retorna => "isto 123m teste" Mid$(texto,8)="12" retorna => "Isto é 12 teste" |
d-) Instr$(Inicio,string1,string2,[Compare]) - Determina a posição da primeira ocorrência de uma substring contida em uma string. Retorna uma variant do tipo Long.
Os argumentos são :
Argumentos | Descrição |
Inicio | Expressão numérica que define a posição de inicio para iniciar a procura. Se omitida a procura começa no inicio da string. |
string1 | A expressão string a ser procurada. |
string2 | A expressão string a procurar. |
compare | Determina o tipo de comparação que será feito entre as strings. |
Constante | Valor | Descrição |
vbUseCompareOption | -1 | A comparação será feita como definida em Option Compare |
vbBinaryCompare | 0 | Comparação binária |
vbTextCompare | 1 | Comparação textual |
vbDatabaseCompare | 2 | Comparação com base no seu banco de dados . Só para o Microsoft Access |
|
Nota: Observe que :
Se | A função InStr irá retornar: |
string1 for igual a "" | 0 |
string1 for Null | Null |
string2 for igual a "" | Inicio |
string2 for igual a Null | Null |
string2 não for encontrada | 0 |
string2 for encontrada em string1 | A posição onde ela for encontrada |
start > string2 | 0 |
Parte | Descrição |
string ( expressão ) | Uma expressão string . Se a expressão for uma string vazia ("") o array retornado estar vazio, ou seja , sem elementos. |
delimiter | Um string caractere usado para identificar Indica onde a divisão vai ocorrer. Se for omitida o caracter de espaço (" " ) será usado. Se for utilizado uma string vazia ("") então um array contendo a expressão completa será retornada. |
count | O número máximo de substrings a ser retornada. -1 indica que todas as substrings serão retornadas. |
compare | Valor numérico indicando o tipo de comparação a usar quando da avaliação das substrings . Veja os valores abaixo: |
Constante | Valor | Descrição |
vbUseCompareOption | –1 | Realiza uma comparação com base na definição de Option Compare. |
vbBinaryCompare | 0 | Realiza uma comparação binária. |
vbTextCompare | 1 | Realiza uma comparação textual. |
vbDatabaseCompare | 2 | Somente para arquivos Microsoft Access. |
1:Private Sub Command1_Click() |
Inicie um projeto no VB e no formulário padrão insira uma caixa de texto , uma caixa de listagem e um botão de comando Abaixo veja o resultado do código ao lado: |
O código para dividir strings e gerar vetores de substrings | O resultado gera 3 substrings: vetor(0), vetor(1) e vetor(2) |
No exemplo acima usamos a função LBound para determinar o valor do menor índice de um array e UBound para determinar o maior valor para um índice de um array. Assim acessaremos todos os índices do array.
Se substituirmos o
código da linha 4 por : vetor =
Split(Text1.Text,,2) iremos obter duas substrings:
0 Visual
1 Basic 6
Exemplo 2- Vamos acrescentar o caractere "s" para indicar onde a divisão irá ocorrer
Private Sub Command1_Click() |
Inicie um projeto no VB e no formulário padrão insira uma caixa de texto , uma caixa de listagem e um botão de comando Abaixo veja o resultado do código ao lado: |
Note que a divisão teve inicio no caracter "s" , retornando 4 substrings contidas nos vetores com indices 0,1,2 e 3.
Podemos aproveitar esta última característica para 'contar' quantas vezes uma substring aparece numa string. Por exemplo , suponha que você queira saber quantas vezes a substring "do" aparece na frase : "Avaliação do impacto do treinamento no trabalho do programador". Usando Split fica fácil ...:
1:Dim frase As string 2:Dim vetor As Variant
3:frase
= "Avaliação do impacto do
treinamento no trabalho do programador" |
Você ter como resposta que 'do' aparece 4 vezes no texto, pois 'do' também esta contida na palavra 'programador'. Para contar somente as ocorrências da preposição 'do' altere a linha 4 do código para: 4:vetor = Split(frase," do ") e você obterá como resposta 3 vezes.
e-)Join(List,Delimter) VB6 - Concatena as substrings contidas em List em uma única string.
-List - deve ser um array de uma dimensão contendo as strings a serem concatenadas
-Delimiter - Caractere string usado para separar as substrings na string retornada. Se omitida o caractere (" ") sera usado. Se for uma string vazia ("") , todos os itens da lista serão concatenados sem delimitadores.
Exemplo:
Dim array(1 to 4) As String
Dim sJunta As String array(1)="Visual" array(2)="Basic" array(3)="6" array(4)="A linguagem"
sJunta= Join(array," ") retorna => "Visual Basic 6 A linguagem" sJunta= Join(array) retorna => "Visual Basic 6 A linguagem" sJunta= Join(array,",") retorna => "Visual,Basic,6,A,linguagem" sJunta= Join(array,":") retorna => "Visual:Basic:6:A:linguagem" sJunta= Join(array,"") retorna => "VisualBasic6Alinguagem" |
g-) Filter(Varlist, Value, Include, Compare) VB6 - Procura em VarList pelas strings definidas em Value e retorna o resultado em um array.
- VarList - contém um array de strings que a função irá filtrar
- Value - é a string de caracteres usada para identificar qual elemento será incluída no novo array.
- Include - Um valor boleano que indica se os elementos contendo o valor coincidente será incluído ou não na string . O valor padrão é True.
- Compare indica como a busca por Value será efetuada.
Os valores de compare podem ser:Constante | Valor | Descrição |
vbUseCompareOption | –1 | Realiza uma comparação com base na definição de Option Compare. |
vbBinaryCompare | 0 | Realiza uma comparação binária. |
vbTextCompare | 1 | Realiza uma comparação textual. |
vbDatabaseCompare | 2 | Somente para arquivos Microsoft Access. |
Exemplo:
Dim vetor(1 to 3) As String Dim i as integer Dim sFiltra As Variant
vetor(1)="Visual" vetor(2)="Basic 6" vetor(3)="a linguagem"
sFiltra=Filter(vetor,"a")
List1.Clear |
h-) StrReverse(string) - VB6 - Retorna uma string com os caracteres invertidos.
Exemplo: StrReverse ("Visual Basic") retorna => cisaB lausiV
Se string for um for um valor Null ocorrerá um erro.
h-) Replace(string, strProcura, strSubstPor, Inicio, Contador, Compare)
Esta função é muito útil para substituir ocorrências em uma string por um determinado valor. Vamos mostrar um exemplo onde vamos substituir todas a vírgulas(,) em uma frase por ponto e vírgula(;):
Exemplo:
Frase = " Geralmente , temos um problema , quando a temperatura aumenta "
NovaFrase = Replace(Frase, "," , ";" ) retorna => "Geralmente ; temos um problema ; quando a temperatura"
Nota: Observe que você deverá estar atento ás seguintes ocorrências:
Se | A função strReverse irá retornar: |
string for igual a "" | "" |
string for Null | Um erro |
strProcura for igual a "" | Uma cópia de string |
strSubstPor for igual a "" | Uma cópia de string com todas as ocorrências de StrProcura removidas |
Inicio > string | Uma string vazia "" |
contador for igual a zero | Uma cópia de string |
Em outro artigo estarei dando continuidade ao assunto , por hoje é só.
Eu sei é só VB, mas eu gosto...
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Veja os
Destaques e novidades do
SUPER DVD Visual Basic (sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ?? Chegou o Super DVD C# com exclusivo material de suporte e vídeo aulas com curso básico sobre C#. Veja também os Cursos com vídeo aulas e projetos exemplos: |
Referências: