FoxPro/Visual FoxPro - contar caracteres

 
Vista:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:contar caracteres

Publicado por Martín Maglianesi (2 intervenciones) el 23/08/2000 00:00:00
Pienso que deberías hacerlo a la antigua, es decir, armándote un bucle (podría ser algo como "For I = 1 to len(texto)") e ir chequeando caracter a caracter si coincide con el que estás buscando. No creo que exista alguna función que lo haga por tí. La que más se acerca, creería que es la función AT() que podría aliviarte parte del trabajo ya que no tendrías que recorrer el texto letra por letra.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:contar caracteres

Publicado por Mauricio Baeza (5 intervenciones) el 23/08/2000 00:00:00
No encontre una funcion de VB que lo haga, pero lo puedes hacer asi...

function Contar
parameters cFrase, cBuscar

store 0 to nLargo, co1, co2

nLargo=len(cFrase)

for co1 = 1 to nLargo
if substr(cFrase, co1, 1) = cBuscar
co2 = co2 + 1
endif
next co1

return co2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:contar caracteres

Publicado por Alejandro Sánchez montes (16 intervenciones) el 23/08/2000 00:00:00
Facil:

? OCCURS("A","ALEJANDRO") //DEVUELVE 2
? OCCURS(",","HOLA, COMO, ESTAS,,,,,,,") //DEVUELVE 9

si quieres saber la posicion necesitas hacer uso de AT() y RAT()

Saludos amigos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:contar caracteres

Publicado por olga gualdo (97 intervenciones) el 24/08/2000 00:00:00
gracias por contestarme...la verdad es que había hecho un bucle...pero es mucho mas fácil así, y ademas ocupa menos lineas..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:contar caracteres

Publicado por Antonio Forero (1 intervención) el 17/02/2016 00:56:48
Mil gracias Alejandro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:contar caracteres

Publicado por Fidel José (657 intervenciones) el 17/02/2016 14:58:20
Para saber cuántos caracteres tiene una frase y sus repeticiones se puede hacer lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:contar caracteres

Publicado por Fidel José (657 intervenciones) el 17/02/2016 15:17:13
Con un método similar (algo más complicado) se puede crear un procedimiento para contar palabras:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar