 Trabalhando Strings no Visual Basic
 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
Vamos 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 Facebook
  
 Compartilhe no Twitter
 
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: