Página 1 de 1

Función de limpieza de acentos y eñes

Publicado: Mié Feb 25, 2015 8:32 pm
por avitalini
Quiero indexar un campo utilizando una función o máximo dos que quiten acentos y eñes y poner en mayúsculas, para que sea fácil de localizar los registros, alguien sabe si hay algo en harbour que me ayude?
O si ya existe en Clipper para 16 bits para no perder compatibilidad en lo que paso todas las aplicaciones a Xailer.
Gracias de antemano, saludos a todos.

Función de limpieza de acentos y eñes

Publicado: Jue Feb 26, 2015 3:46 pm
por Israel Solis
Tengo estas funciones, espero te sirvan...

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* FUNCION : SinAcento(<cCadena>) -> cCadena
* DESCRIPCION: Quita los acentos a la cadena pasada.
* REGRESA : <cCadena> pero SIN Acento
* PARAMETROS : <cCadena> = Cadena a eliminarle los acentos.
* EJEMPLO : ? SinAcento("Sánchez") -> "Sanchez" ? SinAcento("8") -> "8"
* ? SinAcento("í‰") -> "E" ? SinAcento("A") -> "A"
* ? SinAcento("Lí“PEZ") -> "LOPEZ" ? SinAcento("=") -> "="
*
FUNCTION SinAcento(cCadena)
DEFAULT cCadena TO SPACE(1)
IF VALTYPE(cCadena) <> "C"
cCadena := SPACE(1)
ENDIF
cCadena := StrTran(cCadena, "í", "A"); cCadena := StrTran(cCadena, "í‚", "A"); cCadena := StrTran(cCadena, "í€", "A"); cCadena := StrTran(cCadena, "í„", "A"); cCadena := StrTran(cCadena, "íƒ", "A"); cCadena := StrTran(cCadena, "í…", "A")
cCadena := StrTran(cCadena, "í‰", "E"); cCadena := StrTran(cCadena, "íŠ", "E"); cCadena := StrTran(cCadena, "íˆ", "E"); cCadena := StrTran(cCadena, "í‹", "E")
cCadena := StrTran(cCadena, "í", "I"); cCadena := StrTran(cCadena, "íŽ", "I"); cCadena := StrTran(cCadena, "íŒ", "I"); cCadena := StrTran(cCadena, "í", "I")
cCadena := StrTran(cCadena, "í“", "O"); cCadena := StrTran(cCadena, "í”", "O"); cCadena := StrTran(cCadena, "í’", "O"); cCadena := StrTran(cCadena, "í–", "O"); cCadena := StrTran(cCadena, "í•", "O")
cCadena := StrTran(cCadena, "íš", "U"); cCadena := StrTran(cCadena, "í›", "U"); cCadena := StrTran(cCadena, "í™", "U")
cCadena := StrTran(cCadena, "á", "a"); cCadena := StrTran(cCadena, "í¢", "a"); cCadena := StrTran(cCadena, "í ", "a"); cCadena := StrTran(cCadena, "í¤", "a"); cCadena := StrTran(cCadena, "ã", "a"); cCadena := StrTran(cCadena, "í¥", "a")
cCadena := StrTran(cCadena, "é", "e"); cCadena := StrTran(cCadena, "íª", "e"); cCadena := StrTran(cCadena, "í¨", "e"); cCadena := StrTran(cCadena, "í«", "e")
cCadena := StrTran(cCadena, "í­", "i"); cCadena := StrTran(cCadena, "í®", "i"); cCadena := StrTran(cCadena, "í¬", "i"); cCadena := StrTran(cCadena, "í¯", "i")
cCadena := StrTran(cCadena, "ó", "o"); cCadena := StrTran(cCadena, "í´", "o"); cCadena := StrTran(cCadena, "í²", "o"); cCadena := StrTran(cCadena, "í¶", "o"); cCadena := StrTran(cCadena, "íµ", "o")
cCadena := StrTran(cCadena, "ú", "u"); cCadena := StrTran(cCadena, "í»", "u"); cCadena := StrTran(cCadena, "í¹", "u")
RETURN(cCadena)
*
* FIN SinAcento()
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* FUNCION: UpperAnsi(cString) -> cUpperCaseString
* FINALIDAD: Convierte a MAYíšSCULAS la cadena <cString>.
* La diferencia con la función UPPER() de [x]Harbour radica en que esta función también convierte las minúsculas acentuadas
* PARAMETROS: <cString> = Cadena que se desea convertir a MAYíšSCULAS
* REGRESA: <cUpperCaseString> = Cadena <cString> converetida a MAYíšSCULAS
*
FUNCTION UpperAnsi(cString)
cString := StrTran(cString, "á", "í"); cString := StrTran(cString, "í¢", "í‚"); cString := StrTran(cString, "í ", "í€"); cString := StrTran(cString, "í¤", "í„"); cString := StrTran(cString, "ã", "íƒ"); cString := StrTran(cString, "í¥", "í…")
cString := StrTran(cString, "é", "í‰"); cString := StrTran(cString, "íª", "íŠ"); cString := StrTran(cString, "í¨", "íˆ"); cString := StrTran(cString, "í«", "í‹")
cString := StrTran(cString, "í­", "í"); cString := StrTran(cString, "í®", "íŽ"); cString := StrTran(cString, "í¬", "íŒ"); cString := StrTran(cString, "í¯", "í")
cString := StrTran(cString, "ó", "í“"); cString := StrTran(cString, "í´", "í”"); cString := StrTran(cString, "í²", "í’"); cString := StrTran(cString, "í¶", "í–"); cString := StrTran(cString, "íµ", "í•")
cString := StrTran(cString, "ú", "íš"); cString := StrTran(cString, "í»", "í›"); cString := StrTran(cString, "í¹", "í™"); cString := StrTran(cString, "í¼", "íœ")
cString := StrTran(cString, "ñ", "í‘")
RETURN Upper(cString)
*
* FIN UpperAnsi()
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Función de limpieza de acentos y eñes

Publicado: Dom Mar 01, 2015 8:14 am
por avitalini
Excelente función, muchas gracias por compartirla.