.

boas!!
eu costumo utilizar um ciclo "for" q testa todos os carateres de uma string.
Dps a maneira mais rápida seria, a meu ver, excluir os numeros e letras tipo,

test=mid(i,1)
if Asc(test)>35 and Asc(test)<122 then
String=String & test
else
'dps identificava o carater (não numero e não letra sem acento) e aí recorreria a um case tipo
Select Case asc(test)
225 test="a" 'Asc (teste)= 225 é o carater "á"
String=String & test
...
end if

Espero ter ajudado
 
Boas!!
É isso, mas devias evitar entrar no case caso sejam letras normais, o que a meu ver, a maior parte das vezes. Digo isto pela rapidez de execução.

Abraço
 
Última edição:
e tambem podias usar o operador OR para economizar linhas dado que o resultado é comum em muitos dos casos por exemplo: "â", "ä", "à", "å" e "á" é sempre "a"
O Codigo fica mais simples, mais pequeno e mais rapido!
 
Esse código é tão repetitivo que me custa a crer que não haja uma forma melhor de fazer as coisas.
Vou ver se hoje pego nisso e tento optimizar. Abomino código assim :x

(não é por mal, é só a minha opinião pessoal. À primeira vista, até acho que esse é o melhor método, mas não consigo deixar de pensar que há-de haver uma forma ainda melhor)

btw, algum indenting não fazia mal :x
 
Última edição:
Só agora notei que o tópico é de Junho. Que mania de desenterrarem tópicos >_<
De qualquer forma, como tive o trabalho de refazer, mostro na mesma, tal como fiz, e comentado:

Código:
Option Explicit

Public Function retiraCaracteresEspeciais(strAFiltrar As String)

    Dim posASubstituir  As Integer
    Dim curPos          As Integer
    Dim curChar         As String
    Dim substituirDe    As String
    Dim substituirPara  As String
    Dim strFiltrada     As String
    
      substituirDe = "äáàãâÄÁÀéèêëËÉÈÊíìïÍÌÎÏóòôõöÓÒÔÕÖúùûüÚÙÛÜçÇ"
    substituirPara = "aaaaaAAAeeeeEEEEiiiIIIIoooooOOOOOuuuuUUUUcC"
    
    For curPos = 1 To Len(strAFiltrar) 'ciclo na string a filtrar...
        curChar = Mid(strAFiltrar, curPos, 1) 'pega em cada caracter da string
        posASubstituir = InStr(substituirDe, curChar) 'verifica se está na string de caracteres a substituir
        If posASubstituir Then  ' se estiver,
            strFiltrada = strFiltrada & Mid(substituirPara, posASubstituir, 1) 'entra na string filtrada o equivalente não-acentuado
        Else 'se não estiver
            strFiltrada = strFiltrada & curChar 'entra na string filtrada tal como está
        End If
    Next curPos
    
    retiraCaracteresEspeciais = strFiltrada
End Function

Private Sub Form_Load()
    MsgBox retiraCaracteresEspeciais("pórtÙguÊs")
End Sub
Apesar de provavelmente já não ajudar o lightMC, espero que mais tarde ajude outra pessoa =\
Já agora, acrescentei outros caracteres, especialmente os que usam o trema/"umlaut" (ï,Ö...).
 
Última edição:
De nada :) ainda bem que te ajudou, tanto tempo depois!

Agradecimentos do MRP? Mini Radio Player? Só dei ajuda numa porção do código... acho que não é caso para tanto!
 
Continuo a achar que não é caso para tanto. Para eu merecer créditos, quaisquer que sejam, não será mesmo por algo tão pequeno :P

Anyway, tens PM ;)
 
Back
Topo