Power Builder - Espacios intermedios

 
Vista:
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Espacios intermedios

Publicado por Antonio (1271 intervenciones) el 29/05/2011 05:40:55
Hola a todos:

Espero esten bien y les amndo saludos...

Resulta que necesito hacer un procedimiento en el cual tengo que quitar los espacios intermedios de mas que existan en una frase.

Por ejemplo:

El texto es el siguiente en el cual hay mas de un espacio intermedio entre Profesiona y "en" ademas hay otro espacio intermedio entre "en" y Sistemas...

Asesoria Profesional en Sistemas de Cómputo

El texto debe quedar asi:

Asesoria Profesional en Sistemas de Cómputo

sin espacios...

¿Alguien sabe como hacer este proceso?.

Gracias por su ayuda y tiempo
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
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Espacios intermedios

Publicado por JeinnerH (646 intervenciones) el 29/05/2011 06:02:33
Eso lo puedes lograr con algo como esto:

li_pos_espacio=Pos(ls_hilera, ' ')
While li_pos_espacio > 0
ls_hilera=Mid(ls_hilera, li_pos_espacio, 1, 1)
li_pos_espacio=Pos(ls_hilera, ' ')
End Do

No tengo el PB a mano para probarlo, así que esta es la idea general.

Este ciclo debiera quitar todos los espacios, si quieres que deje sólo un espacio, debes buscar los lugares en donde hay dos espacios.
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
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Para JeinnerH

Publicado por Antonio (1271 intervenciones) el 31/05/2011 04:54:17
Hola JeinnerH :

Mil gracias por tu respuesta y ayuda... en verdad es muy valiosa.

Mira, con lo que me propones esta bien cuando se trata de uno o dos espacios, pero la cuestion es que los usurios, como bien sabes, a veces dejan uno espcio, o dos o tres o cuatro, dependiendo de la habilidad de cada usuario y la idea es quitar solo los espcios de mas y solo dejar uno en el caso de que exista una separacion entre cada palabra, pero siempre y cuando exista que hay mas de un espacio.

Nevamente te agradezco tu ayuda e intentare ver como puedo resolverlo.


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
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Para JeinnerH

Publicado por JeinnerH (646 intervenciones) el 01/06/2011 05:43:44
El proceso te sirve precisamente para eso, porque se repite siempre que encuentre un espacio, si lo que quieres es que se repita cada vez que encuentre dos espacios es cuestión de buscar dos espacios en cada Pos.

Por tanto se va a repetir siempre que encuentre dos espacios y va a dejar uno al final, entre cada palabra. Es cuestión de buscar donde haya dos espacios y quitar uno.

Revisalo para que veas que funciona.

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
sin imagen de perfil
Val: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Para JeinnerH

Publicado por JeinnerH (646 intervenciones) el 01/06/2011 18:34:09
Aquí está la función ya arreglada:

f_limpiar_hilera('-----ESTO---ES---UNA-----------PRUEBA----------- -', '--', '-')

Sólo hay que tener cuidado de no enviar en la hilera a buscar el mismo valor que la hilera a reemplazar, porque se enciclaría.

$PBExportHeader$f_limpiar_hilera.srf
global type f_limpiar_hilera from function_object
end type

forward prototypes
global function string f_limpiar_hilera (string as_hilera, string as_caracteres_buscar, string as_caracteres_reemplazar)
end prototypes

global function string f_limpiar_hilera (string as_hilera, string as_caracteres_buscar, string as_caracteres_reemplazar);Integer li_Posicion



li_Posicion=Pos(as_hilera, as_caracteres_buscar, 1)
Do While li_Posicion > 0
as_hilera=Replace(as_hilera, li_Posicion, Len(as_caracteres_buscar), as_caracteres_reemplazar)
li_Posicion=Pos(as_hilera, as_caracteres_buscar, 1)
Loop

RETURN as_hilera
end function
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