quitar guión de una cadena que viene con dígitos

3,928 views
Skip to first unread message

leonardo trujillo

unread,
Aug 30, 2012, 5:10:49 PM8/30/12
to grupo google vfp
hola gente
tengo que quitar de una cadena  del tipo 1234567-0 el guión, el tema está en que no sé en qué lugar puede estar ese guión
¿se entiende?
muchas gracias

Jairo Miranda

unread,
Aug 30, 2012, 5:17:50 PM8/30/12
to publice...@googlegroups.com
 
local m
 m =" 1234567-0"
 
 M = CHRTRAN(m, '-', '')
 
?m  && 12345670
 
se entiende ?
Puedes usarlo para cualquier carácter
 

    CHRTRAN(M, '/', '-')

   CHRTRAN( M, '"', '')

    CHRTRAN( M, "'", '')

    CHRTRAN( M, '+', '')

 

 

JM


--
 
 
 

edgar suarez kummers

unread,
Aug 30, 2012, 5:23:11 PM8/30/12
to publice...@googlegroups.com
* es el código más sencillo que se puede encontrar, pero funciona
vcadena = "1234567-0"
ncadena = ""
largo = len(vcadena)
for alfa = 1 to largo
term = left((right(vcadena,largo-alfa+1),1)
if term = "-" then
else
if term>= "0" then
if term<="9" then
ncadena = ncadena + term
endif
endif
endif
*el termino ncadena = "12345670"



El 30 de agosto de 2012 16:10, leonardo trujillo <trujillo...@gmail.com> escribió:


--
 
 
 



--

edgar suarez kummers

Walter R. Ojeda Valiente

unread,
Aug 30, 2012, 5:24:05 PM8/30/12
to publice...@googlegroups.com
lcNumero      = "1234567-0"
lcNuevoNumero = StrTran(lcNumero, "-", "")
? lcNuevoNumero

Saludos.

Walter.





Date: Thu, 30 Aug 2012 18:10:49 -0300
Subject: [vfp] quitar guión de una cadena que viene con dígitos
From: trujillo...@gmail.com
To: publice...@googlegroups.com
--
 
 
 

edgar suarez kummers

unread,
Aug 30, 2012, 5:28:26 PM8/30/12
to publice...@googlegroups.com
Hazle caso a la solución de Walter ....
mis códigos son como el que te acabo de enviar,
porque para levantar un pie le pido permiso al otro,
o sea sé que me van a funcionar porque son deducidos.

Los de Walter siempre son estudiados del lenguaje.

--
 
 
 

Walter R. Ojeda Valiente

unread,
Aug 30, 2012, 5:32:33 PM8/30/12
to publice...@googlegroups.com
Edgar, te estás complicando la vida sin necesidad, con la función STRTRAN() lo solucionas mucho más facilmente.

Saludos.

Walter.





Date: Thu, 30 Aug 2012 16:23:11 -0500
Subject: Re: [vfp] quitar guión de una cadena que viene con dígitos
From: edgark...@gmail.com
To: publice...@googlegroups.com
--
 
 
 

edgar suarez kummers

unread,
Aug 30, 2012, 5:41:04 PM8/30/12
to publice...@googlegroups.com
Claro que tienes razón Walter ...

Pero es que el genial Bill Gates nunca le dijo a su banda musical que hicieran una ayuda cruzada ...

Ayuda cruzada sería así ...

Pregunta ...
Necesito eliminar de una variable de cadena un elemento específico ...
¿ Cómo se hace Bill el flautista ?

Respuesta...
Bill el trompetista le sugiere utilizar la función STRTRAN()

Para probarte lo que te digo ...

Una Asturiana en la época del Quijote de la Mancha se metía en los potreros junto con su amado y jugaban hacerse cosquillas por allá donde la columna vertebral pierde su casto nombre ...

Qué era lo que hacían ...

Te toca leerte el Quijote para averiguarlo ...

Sancho dime una cosa ...
¿Cómo se dice en Español cuando una pareja se mete en un potrero a hacerse cosquillas en el final del hueso sacro mutuamente ?

Sancho responde ... Se dice refocilarse ....

Bravo Sancho, ahora dile al idiota de Bill Gates por qué no hizo algo así ...

Walter R. Ojeda Valiente

unread,
Aug 30, 2012, 5:46:36 PM8/30/12
to publice...@googlegroups.com
Edgar, lo que tú pides se aproxima mucho a la Inteligencia Artificial, algo que a pesar de todos los dimes y diretes está aún muy lejos de ser verdadera inteligencia.

Quizás en un futuro no muy lejano tu deseo se haga realidad y sea algo muy común, pero por el momento no creo que muchas aplicaciones puedan satisfacerte.

Saludos.

Walter.





Date: Thu, 30 Aug 2012 16:41:04 -0500
--
 
 
 

Luis Maria Guayan

unread,
Aug 30, 2012, 5:43:57 PM8/30/12
to publice...@googlegroups.com
Este no es mas sencillo?

lcCadena = "
1234567-0"
? CHRTRAN(lcCadena,CHRTRAN(lcCadena,"1234567890",""),"")

y funciona con cualquier caracter y extrae solo los dígitos numéricos

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 
 

edgar suarez kummers

unread,
Aug 30, 2012, 6:16:09 PM8/30/12
to publice...@googlegroups.com
Estimado Luis María Guayán ...

Lo que ocurre es que yo no puedo soplar y succionar al mismo tiempo ...

Esa es una característica de personas como tú de extraordinariamente alto coeficiente intelectual ... donde están incorporados varios personajes de este foro que ya he citado.

Tu intervención en el código del visual basic me ahorra casi USD $ 5000 según me cotizaron hoy en la mañana ... mis ternas gracias ... 

Ahora, me demoré doce años haciendo el generador de diagrama escalera para los autómatas y me río de los inteligentes (menos inteligentes que tú claro está ), porque puedo dejar de hacer software de control y cuando me piden algo pongo mi generador que es de ese estilo que dice Walter ...

Estoy acá en la mitad del árbol, pero no quiero estar aquí, tampoco quiero subir y menos bajar ... o sea lo manejo en palabras sencillas y lo suelto ...

Pasa por unos 30 programas y me entrega algo que funciona muy bien, sin errores.

Ya había comentado que de tipo analógico SIMULINK de MATLAB, de MATHWORKS vale USD $ 10.000 para crear un código analógico, que es como para funciones PID, PWM ... en cambio mi software es de raciocinio ... de eventos y hecho todo en frases sencillas de código, entre otras cosas porque manejaba apenas el QBASIC. QB y el BC (CPP) ... claro es código espaguetti, porque yo tenía que razonar y no tenía tiempo para estudiar, le dedicaba casi 20 horas diarias a programar.

saludos majos

edgar 

Victor Espina

unread,
Aug 30, 2012, 7:11:55 PM8/30/12
to publice...@googlegroups.com
Me tomo mis buenos 20seg entender el doble CHRTRAN... genia tu solucion Luis Maria.

Saludos

Victor Espina

Victor Espina

unread,
Aug 30, 2012, 7:14:26 PM8/30/12
to publice...@googlegroups.com
Don Edgar esta como el chiste de "Te imaginas lo que hubiera hecho Simon Bolivar con un Jeep Wrangler y una AK-47!!??"... Si con esos conocimientos hizo nada menos que un generador de programas para PLC y un software para reconocimiento de patrones en video, imaginense lo que haria si aprendiera C++ y programacion orientada a objetos!!!

Saludos 

Victor Espina

HernanCano

unread,
Aug 31, 2012, 12:14:57 AM8/31/12
to publice...@googlegroups.com

local M.Cad, M.Nue, M.N
M.Cad =" 1234567-0"
 
M.Nue = ""

for M.N = 1 to len(
M.Cad)
   if substr(
M.Cad,M.N)<>"-"
      M.Nue = M.Nue + substr(M.Cad,M.N)
   endif
endfor

=MessageBox ( M.Nue )


HernanCano

unread,
Aug 31, 2012, 12:18:08 AM8/31/12
to publice...@googlegroups.com

local M.Cad, M.Nue, M.N
M.Cad =" 1234567-0"
 
if at("-",M.Cad) > 0
   M.Nue = left(M.Cad,at("-",M.Cad)-1) + substr(M.Cad,at("-",M.Cad)+1)
else
   M.Nue = M.Cad
endif

=MessageBox ( M.Nue )

Note Esta sólo funciona si el guión está una sola vez



El jueves, 30 de agosto de 2012 16:10:53 UTC-5, caterva escribió:

HernanCano

unread,
Aug 31, 2012, 12:20:08 AM8/31/12
to publice...@googlegroups.com

local M.Cad, M.Nue, M.N
M.Cad =" 1234567-0"

M.Nue =
M.Cad
 
do while at("-",M.Nue) > 0
   M.Nue = left(M.Nue,at("-",M.Nue)-1) + substr(M.Nue,at("-",M.Nue)+1)
enddo

=MessageBox ( M.Nue )

Note Esta funciona aunque el guión está varias veces (la primera también funciona siempre)



El jueves, 30 de agosto de 2012 16:10:53 UTC-5, caterva escribió:

Pablo Daniel Lissa

unread,
Aug 31, 2012, 8:09:54 AM8/31/12
to publice...@googlegroups.com
Hola:

A mí también me llevó mis 20 segundos (fueron un poco más) para entender el doble CHRTRAN. Muy buena solución. Yo tenía una rutina propia que hacía eso:

************************************************************************
LPARAMETERS cadena as String
LOCAL numeros as String, _caracter as Character

numeros = ""

LOCAL i as Integer
FOR i = 1 TO LEN(cadena)
    _caracter = SUBSTR(cadena, i, 1)
    IF (BETWEEN(ASC(_caracter), ASC("0"), ASC("9")))
        numeros = numeros + _caracter
    ENDIF
ENDFOR

RETURN numeros
*************************************************************************

Y bueno, ya le hice saber a mi rutina que pasa al retiro. Excelente Luis María.

Saludos.
---------------------------------------------------------------------------------------------------------------

Carlos Miguel FARIAS

unread,
Aug 31, 2012, 8:40:00 AM8/31/12
to publice...@googlegroups.com
No demos vuelta, pocos lenguajes manejan cadenas mejor que fox es el C (C++) con el que esta hecho el fox y posiblemente.
En algunos casos PHP y python tienen un manejo superior a C y Fox, pero es excepcional.
Pero indiscutiblemente, en Fox es más fácil manejar cadenas que en C (o sea es C traducido a Humanos o Zorros).
Al menos, en los lenguajes mas conocidos.
Saludos: Miguel, La Pampa (RA)

--
 
 
 

Pablo Daniel Lissa

unread,
Aug 31, 2012, 8:53:13 AM8/31/12
to publice...@googlegroups.com
Es cierto. Si bien no es nada del otro mundo generarse funciones propias que encapsulen a las funciones de cadenas de caracteres de C/C++.

Sin embargo, hay una característica de VFP que me parece genial e irreproducible. El bloque TEXT - ENDTEXT.

Perdón por desviarme del eje del hilo. Saludos.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Arnaldo Toledano

unread,
Aug 31, 2012, 9:52:38 AM8/31/12
to publice...@googlegroups.com
Me llevo tres veces los 20 segundos, hasta que lo entendí.
MUY INGENIOSO Luis Maria


Arnaldo Toledano
--
 
 
 

--
Arnaldo Toledano Tesys Informática Córdoba Argentina

Carlos Miguel FARIAS

unread,
Aug 31, 2012, 11:31:31 AM8/31/12
to publice...@googlegroups.com
Text Endtext es genial, en PHP tenés algo parecido, no conozco tanto de python para decir si tambien se de esa facilidad.

Saludos: Miguel, La Pampa (RA)


--
 
 
 

leonardo trujillo

unread,
Aug 31, 2012, 12:44:00 PM8/31/12
to publice...@googlegroups.com
Perdón que retomo el tema recién ahora.
Agradezco a todos los que participaron ¡¡cuánto se aprende, por favor!!
MUCHÍSIMAS GRACIAS, no tanto por "el pique" que me pasaron sino por la posibilidad de aprender.
saludos compañeros

--
 
 
 

Reply all
Reply to author
Forward
0 new messages