Muchas veces cuando se procesa un archivo desde nuestra aplicación; ya sea un .txt, .csv, .xls, etc.; necesitamos controlar ciertos caracteres que pueden grabarse en tablas y que no son compatibles. Un ejemplo claro es la letra "Ñ", "ñ" o algunos tipos de tildes (acentos) y cualquiera sea el caso muchas veces se guardan símbolos medios raros que después quedan reflejados en Grillas o Reportes y que no se ven bien.
Es por eso que acá dejo un código, que me ha servido de mucho para sortear esas eventualidades al procesar información que llega desde otros medios de almacenamiento. Yo normalmente, lo utilizo como una Subrutina, pero a criterio de quién quiera incorporarlo dentro de su aplicación lo puede hacer como mejor y cómodo le sea.
Variables:
&largo Tipo Numeric (4)
&string Tipo Character (30)
&Posicion Tipo Character (1)
Código:
&largo = &string.Length()
do while &ii <= &largo
&Posicion = &string.Substring(&ii, 1)
do case
case &Posicion = '¥'
&string = strreplace(&string,&Posicion,'Ñ')
case &Posicion = '^'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '+'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '/'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '*'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '?'
&string = strreplace(&string,&Posicion,'')
case &Posicion = 'º'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '!'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '#'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '%'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '&'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '('
&string = strreplace(&string,&Posicion,'')
case &Posicion = ')'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '='
&string = strreplace(&string,&Posicion,'')
case &Posicion = '¿'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '<'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '>'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '@'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '\'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '~'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '?'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '¬'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '{'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '}'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '['
&string = strreplace(&string,&Posicion,'')
case &Posicion = ']'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '´'
&string = strreplace(&string,&Posicion,'')
case &Posicion = 'Ç'
&string = strreplace(&string,&Posicion,'')
case &Posicion = 'ç'
&string = strreplace(&string,&Posicion,'')
case &Posicion='Á' or &Posicion='Â' or &Posicion='Ä'
&string = strreplace(&string,&Posicion,'A')
case &Posicion = 'Ã'
&string = StrReplace(&string, &Posicion, '')
case &Posicion='É' or &Posicion='Ê' or &Posicion='Ë'
&string = strreplace(&string,&Posicion,'E')
case &Posicion='Í' or &Posicion='Î' or &Posicion='Ï'
&string = strreplace(&string,&Posicion,'I')
case &Posicion='Ó' or &Posicion='Ô' or &Posicion='Ö'
&string = strreplace(&string,&Posicion,'O')
case &Posicion='Ú' or &Posicion='Û' or &Posicion='Ü'
&string = strreplace(&string,&Posicion,'U')
case &Posicion='"'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '`'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '`'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '´'
&string = strreplace(&string,&Posicion,'')
case &Posicion = '©'
&string = strreplace(&string,&Posicion,'')
case &Posicion = "'"
&string = strreplace(&string,&Posicion,'')
&ii = &ii + 1
enddo