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