Power Builder - caracteres especiales

 
Vista:

caracteres especiales

Publicado por PBadictions (5 intervenciones) el 13/06/2007 20:33:29
tengo la siguiente cadena.

sds%4·*[+1254asf

pregunta: como hago para quitar los caracteres especiales
es decir solomente dejarlo letras y numeros.

Puedo hacerlo con una sentencia for y recorrer caracter por caracter con la funcion mid(cadena,li_i,1) pero con que comparo. para ver si es numero letra o caracter especial.

Alguna sugerencia.
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:caracteres especiales

Publicado por luis (50 intervenciones) el 14/06/2007 01:42:27
Se me ocuerre que con esto lo puedes solucionar.

1. En una variable cuentas el total de caracteres de tu cadena.
2. Construyes un for del resultado del total de caracteres de tu cadena.
3. lee la cadena caracter por caracter
4. Utiliza la funcion asc

Asc("A")

Esta sentencia te retorna 65, el ASCII valuado para este caso es la letra A:
ejemp. alt+65 = A

5. Maneja un case cuando la variable se encuentre entre 65 y 90 que son los Ascci de la letra "A" a la "Z" , luego entre 97 al 122 que son de la "a" a la "z" minuscula, luego 48 al 57 que son los numeros del 0-9

luego dentro del case concatenas la variable para ir construyendo una nueva cadena.

Si son muchos los registros o lo traes de una tabla el tiempo de ejecucion seria un problema, pero evalua como se comportaria esto,

Disculpa que no lo haga pero ya voy de salida de mi trabajo.

Cualquier otra cosa me cuentas.

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:caracteres especiales

Publicado por Jorge Escobar (110 intervenciones) el 14/06/2007 16:55:14
crea una funcion con un argument type de tipo string (as_cadena)
return type string
lo lo siguiente en el script de la función.
y el script

long ll_i,ll_mid
string ls_char, ls_cad
ll_mid = len(as_cadena)
for ll_i = 1 to ll_mid
ls_char = mid(as_cadena ,ll_i,1)
if (Asc(ls_char) > 64 and Asc(ls_char) < 91) OR (Asc(ls_char) > 96 and Asc(ls_char) < 123) OR (Asc(ls_char) > 47 and Asc(ls_char) < 58 ) then
ls_cad += ls_char
end if
next
return ls_cad

========================
Jorge Escobar
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:caracteres especiales

Publicado por anonimo (70 intervenciones) el 14/06/2007 17:32:58
Hola Jorge , q tal , no se si me podras ayudar en esto

veras le he agregado el evento pbm_keyup a mi sle de busqueda

y funciona bien , pero el evento solo deberia activarse cuando presiono una letra o un numero , no cuando presiono shift , o ctrl ni otra tecla
solo letras y numeros

tengo este choose case , como veras retorna si se presiono shift , o una flecha

//==(KeyA! - KeyZ!) and 48-57 (Key0!-Key9!).
Choose Case key
Case KeyDownArrow! ,KeyUpArrow!,
KeyLeftArrow!,KeyRightArrow!,KeyShift! ....... ....... ...

Return
End choose
//==si paso la verificacion entonces busca
fl_buscar (mi_texto)

//=====================================================

sabes si hay una funcion q me devuelva el valor del key
y asi solamente preguntar por este valor, de lo contrario mi case va ser muy grande

Espero me puedas ayudar
Saludos desde Lima
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