Você está na página 1de 9

Trabalhando strings no Visual Basic -------------------------------------------------------------------------------O que uma string ?

? R: Uma string pode ser concebida como uma cadeia de caracteres , ou seja , uma sequncia de caracteres. Ficou ainda um pouco vago no mesmo ? Ora , vamos tentar novamente : Para o Visual Basic , uma string um texto que pode ser composto de uma sequncia de nenhum ou mais de um caracter . Assim, uma string pode ser composta por caracteres alfabticos , caracteres numricos e/ou smbolos. Exemplos de strings : "Jos Carlos" , "28 de julho" , "16/08/2001" , "11111" , " " , " $51a" , "abc*=" , "" Cada caractere de uma string representado por um valor numrico chamado - cdigo de caractere , ou , cdigo ASCII . A faixa de valores vai de 0 a 255 . Para gerar a lista completa no seu Visual Basic , o cdigo : Dim i as integer For i=0 to 255 debug.Print i ; " - " ; CHR$(i) Next Geralmente declaramos uma string usando a instruo Dim e o tipo de dados string. Ex: Dim variavel As String Nota: Podemos usar o simbolo ($) no final do nome da varivel para indicar que se trata de uma varivel string. Por exemplo : Dim variavel$ , indica que declaramos uma varivel do tipo String. As strings podem ser armazenadas em variveis declaradas como do tipo String ou Variant e podem tambm ser representadas por valores constantes. Exemplo : Dim nome as string nome = "Clayton Lima dos Santos" Debug.Print nome ir imprimir : Clayton Lima dos Santos 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 tambm o cdigo 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 utilizao da declarao Option Explicit no nicio do seu cdigo ir forar voc a declarar todas a variveis . Isto pode lhe poupar de um monte de problemas. Veja: se voc no usar Option Explicit e atribuir o nome Clayton a vriavel sem usar aspas para indicar que Jose uma string e no uma varivel , ou seja : Nome = Clayton o Visual Basic no 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 varivel (variable-length) - Podem conter strings de 0 a 2 bilhess de caracteres e so declaradas assim: Dim string_variavel As String Elas sempre contm a string a elas atribudas que podem ser de tamanhos variados , assim podemos ter: string_variavel = " Isto um teste de declarao 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. So declaradas atribuindo a quantidade de caracteres que podero 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 comparao : < Menor que <= Menor que ou igual a = igual a <> diferente de ou no 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 , ento a comparao interrompida. No caso o como o cdigo do caractere B (66) menor que o cdigo do caractere C (67) ento o VB considera a string "123ABC" menor que a string "123ACB" Nota: a maior de A pois o cdigo de a (97) enquanto que o cdigo de A (65) Se a comparao ocorrer entre duas strings de tamanho diferentes: "ABC" com "ABCD" a comparao encerrada quando no 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 Descrio resultado variavel numrica string string de comparao modelo uma expresso string conforme o a conveno definida. Os valores adotados para comparao no modelo so: 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 no presentes lista de caracteres Vejamos alguns exemplos : Comparao 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 funes para tratamento de strings que o VB nos oferece. Vale lembrar que a verso VB6 trs muitas funes novas para tratar strings. Essas funes facilitam em muito o nosso trabalho e podem substituir muitas linhas de cdigo antes necessrias para obter o mesmo efeito. I-) As funes strings bsicas Primeiro vamos mostrar as funes para tratamento de strings presentes em todas as verses do VB: a-) Str(numero) - Converte um valor numrica em uma string do tipo Variant Dim String String = Str(459) String = Str(-459.65) String = Str(459.001) b-) Len(string )

' Resultado => " 459". ' Resultado = > "-459.65". ' Resultado = > " 459.001".

- Determina o nmero de caracteres de uma string. (o comprimento da string)

Dim sNome As String Dim tamanho As Long sNome = "Visual Basic"

tamanho = Len(sNome)

'Resultado => a variavel tamanho ser igual a 12

c-) Chr$(codigo_do_caractere) Dim Caractere Caractere = Chr(65) Caractere = Chr(97) Caractere = Chr(62) Caractere = Chr(37)

- Retorna uma string caractere associado ao cdigo indicado

' Resultado ==> ' Resultado ==> ' Resultado ==> ' Resultado ==>

A a > %

Para exibir os cdigos de todos os caracteres de 0 a 255 use o cdigo a seguir: Dim i as integer For i=0 to 255 Debug.Print i; chr$(i) Next d-) Asc(string) - Rettorna um valor inteiro que representa o cdigo do primeiro Caractere da String.

Dim MyNumber Numero = Asc("A") Numero = Asc("a") Numero = Asc("Amor")

' Resultado => 65. ' Resultado => 97. ' Resultado => 65.

e-) Space(numero) - Retorna uma string do tipo Variant contendo a quantidade de espaos indicados por nmero. String = "Visual" & Space(10) & "Basic" - insere dez espaos entre as strings Visual e Basic

f-) String$(Tamanho,String) - Cria uma string com comprrimento igual a Tamanho e que contm o primeiro carter indicado em String. Se String tiver mais de um caractere somente o primeiro ser usado. String$(9,"VISUAL") g-) Trim$(string) 'retorna => "VVVVVVVVV"

- Remove os espaos eexistentes de ambos os lados de uma string.

Dim MVar MVar = Trim(" visual basic ")

'MVar ir conter ==>

"visual basic".

h-) RTrim$(string) - Remove os espaos a direita da string. Dim MVar MVar = RTrim(" visual basic ")

'MVar ir conter ==>

" visual basic".

i-) LTrim$(string) - Remove os espaos a esquerda daa string. Dim MVar MVar = LTrim(" visual basic ")

'MVar ir conter ==>

"visual basic ".

j-) LCase$(string) -

Converte todoos os caracteres alfanumricos na string para minsculas.

LCase("SO JOSE DO RIO PRETO , 12-08-2001")

retorna ==> so jose do rio preto , 12-08-2001

j-) UCase$(string) -

Converte todoos os caracteres alfanumricos na string para maisculas. retorna ==> SO JOSE DO RIO PRETO , 12-08-2001

LCase("So Jose Do Rio Preto , 12-08-2001") II) Substrings

Substrings so pedaos de uma string. Veremos a seguir as principais funes para o tratamento de substrings. a-) Left$(String, Tamanho) - Retorna uma string contendo o nmero de caracteres definido em Tamanho do lado esquerdo da String. Left$("Programar com Visual Basic fcil", 9) Left$("Programar com Visual Basic fcil", 50) Left$("Programar com Visual Basic fcil", 0) Retorna ==> "Programar" Retorna ==> "Programar com Visual Basic fcil" Retorna ==> ""

b-) Right$(String, Tamanho) - Retorna uma string contendo o nmero de caracteres definido em Tamanho do lado direito da String. Right$("Programar com Visual Basic fcil", 8) Right$("Programar com Visual Basic fcil", 50) Right$("Programar com Visual Basic fcil", 0) Retorna ==> " fcil" Retorna ==> "Programar com Visual Basic fcil" Retorna ==> ""

c-) Mid$(String, Inicio,[Tamanho]) - Como funo retornaa uma substring da String dada , comeando 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 posio Inicio. Texto ="Isto um teste" Mid$(texto,6)="123456" Mid$(texto,6,3)="123456" Mid$(texto,8)="12"

retorna => "Isto 123456" retorna => "isto 123m teste" retorna => "Isto 12 teste"

d-) Instr$(Inicio,string1,string2,[Compare]) - Determina a posioo da primeira ocorrncia de uma substring contida em uma string. Retorna uma variant do tipo Long. Os argumentos so : Argumentos Descrio Inicio Expresso numrica que define a posio de inicio para iniciar a procura. Se omitida a procura comea no

inicio da string. string1 A expresso string a ser procurada. string2 A expresso string a procurar. compare Determina o tipo de comparao que ser feito entre as strings. Os possiveis tipos de comparao so: Constante Valor Descrio vbUseCompareOption -1 A comparao ser feita como definida em Option Compare vbBinaryCompare 0 Comparao binria vbTextCompare 1 Comparao textual vbDatabaseCompare 2 Comparao com base no seu banco de dados . S para o Microsoft Access Exemplos: Dim String1, String2, posicao String1 = "Visual Basic 6 A linguagem" ' string onde ser feita a procura String2 = "a" ' Substring a procurar

' comparao textual iniciando na posicao 4 posicao = InStr(4, String1, String2, 1) 'Retorna => 5. ' Comparao binaria iniciando na posicao 1 posicao = InStr(1, String1, "A", 0) 'Retorna => 16 ' Comparao binria posicao = InStr(String1, "A") posicao = InStr(1, String1, "W")

'Returns => 16 ' Returns 0 (no achou)

Nota: Observe que : Se A funo InStr ir retornar: string1 for igual a "" 0 string1 for Null Null string2 for igual a "" Inicio string2 for igual a Null Null string2 no for encontrada 0 string2 for encontrada em string1 A posio onde ela for encontrada start > string2 0 d-) Split(string,delimiter,count,compare_mode] VB6 - Divide uma string e retorna as substrings como um array de strings. Parte Descrio string ( expresso ) Uma expresso string . Se a expresso for uma string vazia ("") o array retornado estar vazio, ou seja , sem elementos. delimiter Um string caractere usado para identificar Indica onde a diviso vai ocorrer. Se for omitida o caracter de espao (" " ) ser usado. Se for utilizado uma string vazia ("") ento um array contendo a expresso completa ser retornada. count O nmero mximo de substrings a ser retornada. -1 indica que todas as substrings sero retornadas. compare Valor numrico indicando o tipo de comparao a usar quando da avaliao das substrings . Veja os valores abaixo: Os valores de compare podem ser: Constante Valor Descrio vbUseCompareOption 1 Realiza uma comparao com base na definio de Option Compare. vbBinaryCompare 0 Realiza uma comparao binria. vbTextCompare 1 Realiza uma comparao textual. vbDatabaseCompare 2 Somente para arquivos Microsoft Access.

Exemplo 1- Vamos dividir a string "Visual Basic 6" (voce pode testar com diversas expresses) 1:Private Sub Command1_Click() 2:Dim i As Integer 3:Dim vetor As Variant 4:vetor = Split(Text1.Text) 5:List1.Clear 6:For i = LBound(vetor) To UBound(vetor) 7: List1.AddItem i & vbTab & vetor(i) 7:Next 8:End Sub Inicie um projeto no VB e no formulario padrao insira uma caixa de texto , uma caixa de listagem e um boto de comando Abaixo veja o resultado do cdigo ao lado: O cdigo 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 funo 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 cdigo da linha 4 por : vetor = Split(Text1.Text,,2) iremos obter duas substrings: 0 Visual 1 Basic 6 Exemplo 2- Vamos acrescentar o caracter "s" para indicar onde a diviso ir ocorrer Private Sub Command1_Click() Dim i As Integer Dim vetor As Variant vetor = Split(Text1.Text,"s") List1.Clear For i = LBound(vetor) To UBound(vetor) List1.AddItem i & vbTab & vetor(i) Next End Sub Inicie um projeto no VB e no formulario padrao insira uma caixa de texto , uma caixa de listagem e um boto de comando Abaixo veja o resultado do cdigo ao lado:

Note que a diviso teve inicio no caracter "s" , retornando 4 substrings contidas nos vetores com indices 0,1,2 e 3. Podemos aproveitar esta ltima caracterstica para 'contar' quantas vezes uma substring aparece numa string. Por exemplo , suponha que voc queira saber quantas vezes a substring "do" aparece na frase : "Avaliao do impacto do treinamento no trabalho do programador". Usando Split fica fcil ...: 1:Dim frase As string 2:Dim vetor As Variant 3:frase = "Avaliao do impacto do treinamento no trabalho do programador"

4:vetor = Split(frase,"do") 5:MsgBox " 'do' aparece na texto ' " & frase & " ' " & UBound(vetor) & " vezes."

Voc ter como resposta que 'do' aparece 4 vezes no texto, pois 'do' tambm esta contida na palavra 'programador'. Para contar somente as ocorrncias da preposio 'do' altere a linha 4 do cdigo 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 dimenso 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 sero 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," ") sJunta= Join(array) sJunta= Join(array,",") sJunta= Join(array,":") sJunta= Join(array,"") retorna => "Visual Basic 6 A linguagem" retorna => "Visual Basic 6 A linguagem" retorna => "Visual,Basic,6,A,linguagem" retorna => "Visual:Basic:6:A:linguagem" retorna => "VisualBasic6Alinguagem"

f-) InstrRev(string1,string2,start,Compare) - Retorna um valor que a poso de uma ocorrncia de uma substring(string2) dentro da string de origem(string1). idntica a funo Instr , a diferena que a busca se inicia a partir direita da string at o fim da string. Compare pode ter os seguintes valores: Constante Valor Descrio vbBinaryCompare 0 Realiza comparao binria vbTextCompare 1 Realiza comparao textual

Exemplo: posicao = InStrRev("Isto apenas um teste" , "") retorna ==>

posicao = InStrRev("Isto apenas um teste" , "um") posicao = InStrRev("Isto apenas um teste" , "um", 5) posicao = InStrRev("Isto apenas um teste" , "x")

retorna ==> retorna ==> retorna ==>

g-) Filter(InputStrings, Value[, Include[, Compare]]) VB6 - Procura na InputStrings por strings que contenham Value e retorna a string coincidente em um array. Include um valor boelano que indica se a string coincidente ou no ser retornada. Se for omitido o valor padro True. Compare indica como a busca por Value ser efetuada. Os valores de compare podem ser: Constante Valor Descrio vbUseCompareOption 1 Realiza uma comparao com base na definio de Option Compare. vbBinaryCompare 0 Realiza uma comparao binria. vbTextCompare 1 Realiza uma comparao textual. vbDatabaseCompare 2 Somente para arquivos Microsoft Access. Exemplo: Dim vetor(1 to 4) As String Dim i as integer Dim sFiltra As Variant vetor(1)="Visual" vetor(2)="Basic" vetor(3)="6" vetor(4)="a linguagem" sFiltra=Filter(vetor,"a") List1.Clear For i = LBound(vetor) To UBound(vetor) List1.AddItem i & vbTab & vetor(i) Next