Você está na página 1de 19

Manipulao

de Texto
APROG (Civil)
Aula 16
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Strings
O que so strings?
Uma string (cadeia de caracteres)
uma entidade que representa uma
sequnci a de caract eres (l et ras,
algarismos e caracteres especiais).
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Strings - Declarao
!
Sintaxe

String
Dim <nome> as String

Vector de Strings
Dim <nome>(<n de elementos>) As String
!
Exemplo
Dim st1 As String, st As String

st1 = txtMyString.Text
st = "Ol" + " " & st1
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Funes Trim, LTrim e RTrim
Trim, LTrim e RTrim
Retornam uma cpia da string original, mas sem
os eventuais espaos no incio ou fim da string.
Dim st1 As String, st2 As String
st1 = Ol Mundo!
st2 = Trim(st1)
st2 = LTrim(st1)
st2 = RTrim(st1)

Os espaos que ocorram no interior da string no so


afectados por estas funes.

A string original no afectada.


Resultados:
Ol Mundo!
Ol Mundo!
Ol Mundo!
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Funo Len
Len
Retorna o nmero de caracteres da string.
Dim st1 As String, k As Integer
st1 = " Ol Mundo! "
k = Len(st1)
k = Len(Trim(st1))
Exemplo: Verificar se uma string est vazia
If Len(st1) = 0 then

Endif
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Funes Right e Left
Left, Right
Left(<original> as String, <n_caracteres> as Integer) as String
Copiam o nmero de caracteres indicado da string
original a partir da esquerda (Left) ou da direita (Right).
Dim st1 As String, st2 As String, k As Integer
st1 = "Ol Mundo!"
k = 2
st2 = Left(st1, k)
st2 = Right(st1, k)
Exemplo: eliminar o primeiro caracter de uma string.
st1 = Right(st1, Len(st1)-1)
Resultados:
Ol
o!
l Mundo!
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Funo Mid
Mid
Mid(<original> as String, <pos_init> as Integer [, _
<n_caracteres> as Integer]) as String
Copia o nmero de caracteres indicado a partir da
posio inicial passada como parmetro. O nmero de
caracteres opcional. Se no for indicado, copia tudo
at ao fim da string.
Dim st1 As String, st2 as String
st1 = "Ol Mundo!"
st2 = Mid(st1, 2, 3)
st2 = Mid(st1, 6, 8)
Resultados:
l
ndo!
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Funo Instr
InStr
Instr([<pos_init> as Integer,] <original> as String, _
<padro> as String) as Integer
Procura uma string (<padro>) dentro de outra
(<original>). A posio inicial opcional. Se no for
definida a busca far-se- do princpio.
Dim st1 As String, k As Integer
st1 = "Ol Mundo!"
k = Instr(st1, " ")
k = Instr(5, st1, " ")
Resultados:
k = 4
k = 0
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Funes UCase e LCase
UCase, LCase
UCase(<original> as String) as String
LCase(<original> as String) as String
Retorna uma string idntica original, mas com os
caracteres convertidos para maisculas (UCase) ou
minsculas (LCase). Os nmeros e os caracteres
de pontuao no so obviamente afectados.
Dim st1 As String, st2 as String
st1 = "Ola 1,2,3!"
st2 = UCase(st1)
st2 = LCase(st1)
Resultados:
OLA 1,2,3!
ola mundo!
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Algoritmos de manipulao de Strings
Separao de uma string em caracteres
!
Mtodo 1

Utilizam-se as funes Left() e Right()

Ciclo DoLoop
!
Mtodo 2

Utilizando a funo Mid()

Ciclo For Next ou Do Loop


Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Separao de caracteres
!
Mtodo 1 destri a string original
Dim st As String, c As String
Do While st <> ""
c = Left(st, 1)
' Aqui pode-se fazer algo com os caracteres
st = Right(st, Len(st) - 1)
Loop
!
Mtodo 2 preserva a string original
Dim st As String, c As String, v As Integer
For v = 1 To Len(st)
c = Mid(st, v, 1)
' Aqui pode-se fazer algo com os caracteres
Next
Obtm o primeiro caracter da string.
Elimina o primeiro caracter da string,
copiando todos os caracteres menos
o primeiro.
Obtm o caracter na posio v string.
Para cada caracter da string.
Enquanto a string tiver caracteres...
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Exemplo
Enunciado
Elabore uma funo que retorne a inversa de uma
string passada como parmetro. Utilizando a funo,
elabore um programa que verifique se uma dada
string simtrica de si prpria.
txtSt
lblSim
lblRes
cmdVer
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Exemplo
Private Sub cmdVer_Click()
Dim sto As String, sti As String

lblRes.Visible = False
sto = txtSt.Text
sti = invString(sto)
lblSim.Caption = sti
If sti = sto Then
lblRes.Caption = "String Simtrica!"
Else
lblRes.Caption = "String Assimtrica!"
End If
lblRes.Visible = True
End Sub
Function invString(ByVal st As String) As String
Dim c As String, iv As String
Do While st <> ""
c = Left(st, 1)
st = Right(st, Len(st) - 1)
iv = c & iv
Loop
invString = iv
End Function
Reconstri a string colocando os caracteres
pela ordem inversa, isto , o ltimo
colocado no incio.
invocao da funo
Enquanto a string tiver caracteres...
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Separao em palavras
Separao de uma string em palavras

Entende-se como uma palavra:


Conjunto de caracteres entre espaos, entre o incio
da string e um espao, entre um espao e o fim da
string, ou todos os caracteres de uma string, se esta
no tiver espaos.

Vamos utilizar um mtodo destrutivo, em que se


procura o primeiro espao e se assume que
entre o incio da string e o espao se encontra
uma s palavra.
!
Utilizam-se as funes Left(), Right(), Instr() e Trim()
!
Ciclo DoLoop
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Separao em palavras
st = Trim(st)
Do While st <> ""
p = InStr(st, " ")
If p > 0 Then
pal = Left(st, p - 1)
st = LTrim(Right(st, Len(st) - p))
Else
pal = st
st = ""
End If
' Pode-se fazer aqui alguma coisa com a palavra contida na varivel pal
Loop
Elimina espaos no incio e fim da string, de forma a que
o primeiro espao delimite uma palavra.
E
n
q
u
a
n
t
o

a

s
t
r
i
n
g

t
i
v
e
r

c
a
r
a
c
t
e
r
e
s
.
.
Procura o primeiro espao da string, retornando a
sua posio ou um valor negativo ou nulo, se no
existir.
S
e

e
x
i
s
t
i
r
P
a
l
a
v
r
a

n
i
c
a
Copia a palavra (p-1 caracteres para
no copiar o espao)
Elimina a palavra copiada.
Utiliza-se o LTrim() para
eliminar eventuais espaos
repetidos entre palavras.
Copia a palavra e
limpa a string.
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Execuo passo a passo
Teste com a string:
Ol mundo !
Iterao st st <> "" p p>0 pal
" Ol mundo! " ""
"Ol mundo!"
1 True
4
True
"Ol"
"mundo!"
2 True
0
False
"mundo!"
""
3 False
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Exemplo 1
Elabore uma funo que recebe uma string como
parmetro e retorna o nmero de palavras que a
string contm.
Public Function nPal(ByVal st As String) As Integer
Dim n As Integer, p As Integer
st = Trim(st)!
If st<> Then
Do
p = InStr(1, st, " ")
If p > 0 Then
st = LTrim(Right(st, Len(st) - p))
End If
n = n + 1
Loop While p > 0
End If
nPal = n
End Function
Conta o nmero de palavras encontradas
Se p>0, porque encontrou um
espao e, portanto, uma palavra.
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Exemplo 2
Elabore uma funo que recebe uma string e um
nmero n como parmetros e retorna outra string com
as palavras da primeira com menos de n caracteres.
Function truncaPal(ByVal st As String, ByVal n As Integer) As String
Dim p As Integer, pal As String, stout As String
st = Trim(st)
Do While st <> ""
p = InStr(st, " ")
If p > 0 Then
pal = Left(st, p - 1)
st = LTrim(Right(st, Len(st) - p))
Else
pal = st
st = ""
End If
If Len(pal) < n Then
stout = stout + " " + pal
End If
Loop
truncaPal = Trim(stout)
End Function
Se a palavra contm menos de n
caracteres, ento acrescentada
a stout.
Extrai uma palavra e
prepara st para a
prxima extrao.
Strings - Manipulao de Texto
ISEPDEI, Angelo Martins 2006
ISEP-DEI, Antnio Silva, 2007-9
APROG
Civil
Exerccio
Enunciado
Elabore uma funo que receba uma string e um caracter e
que devolva essa string expurgada de todas as ocorrncias
desse caracter.
Function limpaString(ByVal st As String,ByVal c As String) As String
Dim i As Integer, p As Integer
Dim s As String
Do While st <> ""
p = InStr(st, c)
s = s & Left(st, p - 1)
st = Mid(st, p + 1)
Loop
limpaString = s
End Function