You are on page 1of 8

Trabalhando strings no Visual Basic

Pgina 1 de 8

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 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 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 = "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 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 Jose a varivel sem usar aspas para indicar que Jose uma string e no uma varivel , ou seja : Nome = Jose 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 bilhes 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:

http://www.macoratti.net/strings.htm

28/10/2009

Trabalhando strings no Visual Basic

Pgina 2 de 8

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 resultado string modelo Descrio variavel numrica string de comparao uma expresso string conforme o a conveno definida.

Os valores adotados para comparao no modelo so: Caracteres no Modelo ? * # [charlist] [!charlist] Valor comparativo na string Qualquer caractere simples Nenhum ou mais de um caractere Qualquer digito simples ( "0", ..."9") Qualquer caractere simples da lista de caracteres 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

http://www.macoratti.net/strings.htm

28/10/2009

Trabalhando strings no Visual Basic

Pgina 3 de 8

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) ' Resultado => " 459". String = Str(-459.65) ' Resultado = > "-459.65". String = Str(459.001) ' Resultado = > " 459.001". b-) Len(string ) - 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) - Retorna uma string caractere associado ao cdigo indicado Dim Caractere Caractere = Chr(65) ' Resultado Caractere = Chr(97) ' Resultado Caractere = Chr(62) ' Resultado Caractere = Chr(37) ' 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) - Retorna um valor inteiro que representa o cdigo do primeiro Caractere da String. Dim MyNumber Numero = Asc("A") ' Resultado => 65. Numero = Asc("a") ' Resultado => 97. Numero = Asc("Amor") ' 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 comprimento 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") 'retorna => "VVVVVVVVV" g-) Trim$(string) - Remove os espaos existentes 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 da string. Dim MVar MVar = LTrim(" visual basic ")

'MVar ir conter

==>

"visual basic ".

j-) LCase$(string) - Converte todos os caracteres alfanumricos na string para minsculas.

http://www.macoratti.net/strings.htm

28/10/2009

Trabalhando strings no Visual Basic

Pgina 4 de 8

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

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

l-) UCase$(string) - Converte todos os caracteres alfanumricos na string para maisculas. 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) Retorna ==> "Programar" Left$("Programar com Visual Basic fcil", 50) Retorna ==> "Programar com Visual Basic fcil" Left$("Programar com Visual Basic fcil", 0) 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) Retorna ==> " fcil" Right$("Programar com Visual Basic fcil", 50) Retorna ==> "Programar com Visual Basic fcil" Right$("Programar com Visual Basic fcil", 0) Retorna ==> "" c-) Mid$(String, Inicio,[Tamanho]) - Como funo retorna 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" 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 posio da primeira ocorrncia de uma substring contida em uma string. Retorna uma variant do tipo Long. Os argumentos so : Argumentos Inicio string1 string2 compare Descrio Expresso numrica que define a posio de inicio para iniciar a procura. Se omitida a procura comea no inicio da string. A expresso string a ser procurada. A expresso string a procurar. Determina o tipo de comparao que ser feito entre as strings. retorna ==> SO JOSE DO RIO PRETO , 12-08-2001

Os possveis tipos de comparao so: Constante vbUseCompareOption vbBinaryCompare vbTextCompare Valor -1 0 1 Descrio A comparao ser feita como definida em Option Compare Comparao binria Comparao textual

http://www.macoratti.net/strings.htm

28/10/2009

Trabalhando strings no Visual Basic

Pgina 5 de 8

vbDatabaseCompare Exemplos: Dim String1, String2, posicao

Comparao com base no seu banco de dados . S para o Microsoft Access

String1 = "Visual Basic 6 A linguagem" String2 = "a"

' string onde ser feita a procura

' Substring a procurar 'Retorna => 5. 'Retorna => 16 'Returns => 16 ' Returns 0 (no achou)

' comparao textual iniciando na posicao 4 posicao = InStr(4, String1, String2, 1) ' Comparao binaria iniciando na posicao 1 posicao = InStr(1, String1, "A", 0) ' Comparao binria posicao = InStr(String1, "A") posicao = InStr(1, String1, "W") Nota: Observe que : Se string1 for igual a "" string1 for Null string2 for igual a "" string2 for igual a Null string2 no for encontrada string2 for encontrada em string1 start > string2

A funo InStr ir retornar: 0 Null Inicio Null 0 A posio onde ela for encontrada 0

d-) Split(string,delimiter,count,compare_mode] VB6 - Divide uma string e retorna as substrings como um array de strings. Parte string ( expresso ) delimiter Descrio Uma expresso string . Se a expresso for uma string vazia ("") o array retornado estar vazio, ou seja , sem elementos. 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. O nmero mximo de substrings a ser retornada. -1 indica que todas as substrings sero retornadas. Valor numrico indicando o tipo de comparao a usar quando da avaliao das substrings . Veja os valores abaixo:

count compare

Os valores de compare podem ser: Constante vbUseCompareOption vbBinaryCompare vbTextCompare vbDatabaseCompare Valor 1 0 1 2 Descrio Realiza uma comparao com base na definio de Option Compare. Realiza uma comparao binria. Realiza uma comparao textual. Somente para arquivos Microsoft Access.

Exemplo 1- Vamos dividir a string "Visual Basic 6" (voc pode testar com diversas expresses) Inicie um projeto no VB e no formulrio padro insira uma caixa de texto , uma caixa de listagem e um boto de comando Abaixo veja o resultado do cdigo ao lado: 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

http://www.macoratti.net/strings.htm

28/10/2009

Trabalhando strings no Visual Basic

Pgina 6 de 8

8:End Sub

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 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" Inicie um projeto no VB e no formulrio padro insira uma caixa de texto , uma caixa de listagem e um boto de comando Abaixo veja o resultado do cdigo ao lado:

http://www.macoratti.net/strings.htm

28/10/2009

Trabalhando strings no Visual Basic

Pgina 7 de 8

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 - contm um array de strings que a funo ir filtrar - Value - a string de caracteres usada para identificar qual elemento ser includa no novo array. - Include - Um valor boleano que indica se os elementos contendo o valor coincidente ser incluido ou no na string . O valor padro True. - Compare indica como a busca por Value ser efetuada. Os valores de compare podem ser: Constante vbUseCompareOption vbBinaryCompare vbTextCompare vbDatabaseCompare 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 For i = LBound(vetor) To UBound(vetor) List1.AddItem i & vbTab & vetor(i) Next Valor 1 0 1 2 Descrio Realiza uma comparao com base na definio de Option Compare. Realiza uma comparao binria. Realiza uma comparao textual. Somente para arquivos Microsoft Access.

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)
1. 2. 3. 4. 5. 6.

String - a string a ser alterada strProcura - a string a procurar em <String> strSubstPor - a string usada para substituir a string <strProcura> Inicio - indica o incio da busca por <strProcura>. (Opcional) Contador - indica o nmero mximo de vezes que <strProcura> ser substituida Compare - o modo de comparao a ser efetuada.

Esta funo muito til para substituir ocorrncias em uma string por um determinado valor. Vamos mostrar um exemplo onde vamos substituir todas a vrgulas(,) em uma frase por ponto e vrgula(;): 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 ocorrncias:

http://www.macoratti.net/strings.htm

28/10/2009

Trabalhando strings no Visual Basic

Pgina 8 de 8

Se string for igual a "" string for Null strProcura for igual a "" strSubstPor for igual a "" Inicio > string contador for igual a zero

A funo strReverse ir retornar: "" Um erro Uma cpia de string Uma cpia de string com todas as ocorrncias de StrProcura removidas Uma string vazia "" Uma cpia de string

Em outro artigo estarei dando continuidade ao assunto , por hoje s. Eu sei s VB, mas eu gosto...

Jos Carlos Macoratti

http://www.macoratti.net/strings.htm

28/10/2009