contar caracteres
Publicado por olga gualdo sesma (97 intervenciones) el 23/08/2000 00:00:00
hola como puedos hacer para saber el numero de caracteres iguales que hay en una frase , por ejemplo cuantas comas hay en una frase
Valora esta pregunta


0
LOCAL lcTExto
TEXT TO lcTexto NOSHOW PRETEXT 15
Esta es una frase de la cual se quiere saber cuántos caracteres
iguales tiene y sus repeticiones, quizás.
También sería bueno poder controlar algunos items.
ENDTEXT
ContarCaracteres( m.lcTexto)
PROCEDURE ContarCaracters
*------------------------------------------
* Esta es una rutina de prueba
* Hay que estudiar la devolución que se necesita para el caso concreto.
* -------------------------------------------------------------------------------------------------
LPARAMETERS tcTexto
LOCAL i
CREATE CURSOR curText ("Letra" c(1))
FOR i = 1 TO LEN(tctexto)
INSERT INTO curText (letra) VALUES (SUBSTR(m.tcTexto,m.i,1))
ENDFOR
SELECT letra,COUNT(letra) as Repeti FROM curText ;
WHERE .t. ;
GROUP BY letra ;
ORDER BY letra ;
INTO CURSOR curResum READWRITE
IF _tally > 0
SELECT curResum
BROWSE
ENDIF
*<Comprobando algunos caracteres>
MESSAGEBOX("e="+TRANSFORM(OCCURS("e",tcTExto))+CHR(13);
+"a="+TRANSFORM(OCCURS("a",tcTExto))+CHR(13);
+"t="+TRANSFORM(OCCURS("t",tcTexto)))
USE IN curResumen
USE IN curText
ENDPROC
PROCEDURE Contar_palabras
LPARAMETERS toEdit
*<DefineConstants>
#DEFINE _TAB_ CHR(9)
#DEFINE _CL_ CHR(10)
#DEFINE _CR_ CHR(13)
#DEFINE _SPA_ CHR(32)
#DEFINE _COMA_ ","
#DEFINE _PUNTO_ "."
#DEFINE _PUNCOMA_ ";"
#DEFINE _DOSPUN_ ":"
#DEFINE _COMID_ CHR(34)
#DEFINE _COMIS_ CHR(39)
#DEFINE _PAROP_ CHR(40)
#DEFINE _PARCLO_ CHR(41)
#DEFINE _BRAKOP_ CHR(91)
#DEFINE _BRAKCLO_ CHR(93)
*</DefineConstants>
*<DeclareLocals>
LOCAL i,;
lcString,;
lcReempla
LOCAL ARRAY laWords(1)
*</DeclareLocals>
*<CheckParameters>
lcType = VARTYPE(toEdit)
DO CASE
CASE m.lctype = "O"
lcString = toEdit.Text
CASE m.lcType ="C"
IF FILE(m.toEdit)
* May be a file
lcString = FILETOSTR(m.toEdit)
ELSE
* May be a Character Variable
lcString = m.toEdit
ENDIF
OTHERWISE
lcString = ""
ENDCASE
*</CheckParameters>
*<AssignValues>
lcReempla = _COMA_+_PUNTO_+_PUNCOMA_+_DOSPUN_+_COMID_+_COMIS_ + _PAROP_ + _PARCLO_ + _BRAKOP_ + _BRAKCLO_
*</AssignValues>
CREATE CURSOR curWords ("palabras" c(70))
*<DetectWords>
lnWords = ALINES(laWords, LOWER(CHRTRAN(m.lcString , m.lcReempla , _SPA_ )) , 1+4 , _TAB_,_CL_,_CR_,_SPA_ )
FOR i=1 TO m.lnWords
INSERT INTO curWords (palabras) VALUES (laWords[i])
NEXT
SELECT palabras,COUNT(palabras) as Repeti ;
FROM curWords ;
WHERE .t. ;
GROUP BY palabras ;
ORDER BY palabras ;
INTO CURSOR curCntWords READWRITE
IF _tally > 0
SELECT curCntWords
BROWSE
ENDIF
USE IN curWords
USE IN curCntWords