Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Oracle (https://www.clubdelphi.com/foros/forumdisplay.php?f=22)
-   -   quitar caracteres especiales (https://www.clubdelphi.com/foros/showthread.php?t=82416)

cd.rafael 05-03-2013 18:27:24

quitar caracteres especiales
 
Cordial Saludo,

Estoy tratando de hacer una función que me permita eliminar los carateres especiales en un string. Ej.

Si tengo la siguiente cadena:

a!bc#1.2"3/*-

Necesito que quede:

abc123

Tengo la siguiente consulta, pero el problema es que me elimina también los números:

select
REGEXP_REPLACE(REPLACE(UPPER (UTL_RAW.CAST_TO_VARCHAR2 ((NLSSORT('a!bc#1.2"3/*-', 'nls_sort=binary_ai')))), ' ', ''), '[^A-Z]', '')
from
DUAL;

Agradezco de antemano cualquier colaboración.

roman 05-03-2013 18:41:09

¿Has probado poner [^A-Z0-9] en lugar de [^A-Z]?

// Sludos

radenf 05-03-2013 19:12:32

Estimado cd.rafael :

Yo utilizo la siguiente función que algún publicó alguien aquí en el foro.

Código Delphi [-]
function EliminarCaracter(const cadena: string) : string;
const
CA = '^,<>/_:;.()!"$%&=?¿¡*+';
CB = '                      ';
var
Ch: Char;
L, P: Integer;
Source, Dest: PChar;
begin
L := Length(cadena);
SetLength(Result, L);
Source := Pointer(cadena);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
P := Pos(Ch, CA);
if P > 0 then
Dest^ := CB[P]
else
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end;

Esta cambia el carácter por un espacio.
En CA colocas los caracteres que quieres cambiar y en CB el que quieres que aparezca.
Ojalá te sirva.

Saludos

cd.rafael 05-03-2013 20:07:58

Cordial Saludo,

Gracias a todos. Coloqué [^A-Z0-9] como dijo roman y funcionó de maravilla.

Mil Gracias.


La franja horaria es GMT +2. Ahora son las 13:04:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi