Hola buenos días.
Estoy intentando hacer una función que sustituya las vocales acentuadas por sus correspondientes sin acentuar.
Es sencillo. Ahora lo que quiero es que además sea lo más rápido posible.
He probado varias formas.
1. Recorrer carácter por carácter. comprobar y sustitir. (lento)
2. Array con áéíóúÁÉÍÓÚ y 10 strtran de la cadena por aeiouAEIOU más rápido pero no suficiente
Me pregunto si alguien sabe traducir esto en expresiones regulares y si iría más rápido.
Un saludo
Sustiturir vocales acentuadas SOLUCIONADO
Sustiturir vocales acentuadas SOLUCIONADO
Last edited by pgfdz on Tue Oct 18, 2016 2:49 pm, edited 2 times in total.
Paco García
- jrestojeda
- Posts: 601
- Joined: Wed Jul 04, 2007 3:51 pm
- Location: Buenos Aires - Argentina
Re: Sustiturir vocales acentuadas
Hola,
Probá esto:
Otra usando Arrays:
Espero te sirva.
Saludos,
Probá esto:
Code: Select all | Expand
Function ReemplazarVocales(cCadena)
Local cRespuesta
cRespuesta:=STRTRAN(cCadena ,"á","a")
cRespuesta:=STRTRAN(cRespuesta,"é","e")
cRespuesta:=STRTRAN(cRespuesta,"í","i")
cRespuesta:=STRTRAN(cRespuesta,"ó","o")
cRespuesta:=STRTRAN(cRespuesta,"ú","u")
cRespuesta:=STRTRAN(cRespuesta,"Á","A")
cRespuesta:=STRTRAN(cRespuesta,"É","E")
cRespuesta:=STRTRAN(cRespuesta,"Í","I")
cRespuesta:=STRTRAN(cRespuesta,"Ó","O")
cRespuesta:=STRTRAN(cRespuesta,"Ú","U")
Return cRespuesta
Otra usando Arrays:
Code: Select all | Expand
Function ReemplazarVocales2(cCadena)
Local cRespuesta,N,aArray1,aArray2
aArray1:={"á","é","í","ó","ú","Á","É","Í","Ó","Ú"}
aArray2:={"a","e","i","o","u","A","E","I","O","U"}
cRespuesta:=cCadena
FOR N=1 TO LEN(aArray1)
cRespuesta:=STRTRAN(cRespuesta,aArray1[N],aArray2[N])
NEXT
Return cRespuesta
//
Espero te sirva.
Saludos,
Last edited by jrestojeda on Tue Oct 18, 2016 7:21 pm, edited 1 time in total.
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
Re: Sustiturir vocales acentuadas
Hola, gracias por las respuestas.
Por mi parte utilicé un código que encontré en el foro y lo adapté: http://forums.fivetechsupport.com/viewtopic.php?p=139845
Trabaja sobre el mismo buffer que se recibe.
Un saludo
Por mi parte utilicé un código que encontré en el foro y lo adapté: http://forums.fivetechsupport.com/viewtopic.php?p=139845
Code: Select all | Expand
#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
#include <hbapiitm.h>
#include <hbapierr.h>
HB_FUNC( UNACC )
{
char * cData = hb_parc( 1 );
HB_ISIZ nLen = hb_parclen( 1 );
HB_ISIZ nPos = 0, nPosRet = 0, nVal;
char cElem;
if( ! cData )
{
hb_errRT_BASE( EG_ARG, 3012, NULL,
HB_ERR_FUNCNAME, 1, hb_paramError( 1 ) );
return;
}
if( ! nLen )
{
hb_retc_null();
return;
}
while( nPos < nLen )
{
cElem = cData[ nPos ];
if( cElem == 'á' )
{
cData[ nPosRet ] = 'a';
}
else if( cElem == 'é' )
{
cData[ nPosRet ] = 'e';
}
else if( cElem == 'í' )
{
cData[ nPosRet ] = 'i';
}
else if( cElem == 'ó' )
{
cData[ nPosRet ] = 'o';
}
else if( cElem == 'ú' )
{
cData[ nPosRet ] = 'u';
}
if( cElem == 'Á' )
{
cData[ nPosRet ] = 'A';
}
else if( cElem == 'É' )
{
cData[ nPosRet ] = 'E';
}
else if( cElem == 'Í' )
{
cData[ nPosRet ] = 'I';
}
else if( cElem == 'Ó' )
{
cData[ nPosRet ] = 'O';
}
else if( cElem == 'Ú' )
{
cData[ nPosRet ] = 'U';
}
nPosRet++;
nPos++;
}
hb_storc( cData, 1 );
}
#pragma ENDDUMP
Trabaja sobre el mismo buffer que se recibe.
Un saludo
Paco García
- Carles
- Posts: 1149
- Joined: Fri Feb 10, 2006 2:34 pm
- Location: Barcelona
- Been thanked: 6 times
- Contact:
Re: Sustiturir vocales acentuadas SOLUCIONADO
Salutacions, saludos, regards
"...programar es fácil, hacer programas es difícil..."
UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
"...programar es fácil, hacer programas es difícil..."
UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
- karinha
- Posts: 7916
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: Sustiturir vocales acentuadas SOLUCIONADO
Carles wrote:paco,
Quizas hb_translate() te sirva --> https://github.com/vszakats/harbour-cor ... n/lang.txt
Carles, con harbour funciona perfecto. Con xHarbour no funciona?
Gracias, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- Carles
- Posts: 1149
- Joined: Fri Feb 10, 2006 2:34 pm
- Location: Barcelona
- Been thanked: 6 times
- Contact:
Re: Sustiturir vocales acentuadas SOLUCIONADO
Hola,
Solo uso Harbour desde hace años, lo siento.
karinha wrote:Carles wrote:paco,
Quizas hb_translate() te sirva --> https://github.com/vszakats/harbour-cor ... n/lang.txt
Carles, con harbour funciona perfecto. Con xHarbour no funciona?
Gracias, saludos.
Solo uso Harbour desde hace años, lo siento.
Salutacions, saludos, regards
"...programar es fácil, hacer programas es difícil..."
UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
"...programar es fácil, hacer programas es difícil..."
UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk