Página 1 de 1
Separando letra a letra
Enviado: 22 Mar 2011 11:55
por rbonotto
Ola,
Estou tentando pegar uma string e desmonta-la letra a letra. Por exemplo:
"apartamento"
var1 := ´a´
var2 := ´p´
var3 := ´a´
var4 := ´r´
etc...
Tentei com a funcao LETFT mas ela vai acumulando:
wRd_cRpt := "apartamento"
cTrnUm := 1
WHILE cTrnUm <= 10
lTraCripta := LEFT(wRd_cRpt,cTrnUm)
@00,00 CLEAR TO 25,80
@ 01,01 SAY cTrnUm
@ 02,01 SAY lTraCripta
gravaletra(lTraCripta)
cTrnUm ++
END
Alguem teria uma ideia de como pegar letra a letra ?
Re: Separando letra a letra
Enviado: 22 Mar 2011 12:46
por alxsts
Olá!
Abaixo, algumas idéias:
Código: Selecionar todos
FUNCTION TstSplit()
LOCAL aArray
CLS
aArray := StrSplit1( "Apartamento" )
QOut( "StrSplit1" ) ; QOut()
Aeval( aarray, { |e| QQout(e) } )
QOut( "Tecle algo..." )
Inkey(0)
QOut( "StrSplit2" ) ; QOut()
aArray := StrSplit2( "Apartamento" )
Aeval( aArray, { |e| QQout(e) } )
RETURN
//------------------------------------------------------------------------------
FUNCTION StrSplit1( cArg )
LOCAL aArray := {}, nLen, nPos
If ! Empty( cArg := AllTrim( cArg ) )
nLen := Len( cArg )
FOR nPos := 1 TO nLen
AAdd( aArray, Substr( cArg, nPos, 1 ) )
Next
Endif
RETURN aArray
//------------------------------------------------------------------------------
FUNCTION StrSplit2( cArg )
LOCAL aArray := {}
If ! Empty( cArg := AllTrim( cArg ) )
WHILE ! Empty( cArg )
AAdd( aArray, Left( cArg, 1 ) )
If Len( cArg ) > 1
cArg := Substr( cArg, 2 )
Else
cArg := ""
Endif
ENDDO
ENDIF
RETURN aArray
//------------------------------------------------------------------------------
Re: Separando letra a letra
Enviado: 22 Mar 2011 13:20
por anacatacombs
Caso não tenha experiência com bloco de código, poderia usar um FOR também.
Código: Selecionar todos
cString:= "Mostra letra a letra"
nLinha := 01
FOR posi := 1 TO LEN(cString)
@ nLinha,01 SAY SUBSTR(cString,posi,1)
nLinha++
NEXT
[]'s
Ana
Re: Separando letra a letra
Enviado: 22 Mar 2011 13:24
por rbonotto
Obrigado pessoal ! problema resolvido ! :{ :)Pos