|
|
|
|
|
Dicas
|
|
Visual Basic (Validações)
|
|
|
Título da Dica: Substituindo todos os acentos em um texto
|
|
|
|
Postada em 25/8/2003 por Ð@®l@n
Outro dia recebi uma consulta sobre como eliminar os caracteres acentuados de um texto. Na verdade o texto fora importado de uma base de dados padrão ISAM ( dbase , Fox Pro , Paradox ) e deveria ser usada em uma outra fonte de dados de forma que os caracteres acentuados iriam causar muitos problemas e deveriam ser removidos. Assim é , ê , ë deve tornar-se e ; á, à , ä, ã deve virar a , e assim por diante...
Para resolver o problema é só criar uma função que substitua esses caracteres pelos correspondentes sem acento. Muito esperto !! Para faze isto é só dar uma olhada na tabela ASCII de caracteres onde temos o código que representa cada caractere:
128 € 160 [space] 192 À 224 à 129 € 161 ¡ 193 Á 225 á 130 € 162 ¢ 194 Â 226 â 131 € 163 £ 195 Ã 227 ã 132 € 164 ¤ 196 Ä 228 ä 133 € 165 ¥ 197 Å 229 å 134 € 166 ¦ 198 Æ 230 æ 135 € 167 § 199 Ç 231 ç 136 € 168 ¨ 200 È 232 è 137 € 169 © 201 É 233 é 138 € 170 ª 202 Ê 234 ê 139 € 171 « 203 Ë 235 ë 140 € 172 ¬ 204 Ì 236 ì 141 € 173 205 Í 237 í 142 € 174 ® 206 Î 238 î 143 € 175 ¯ 207 Ï 239 ï 144 € 176 ° 208 Ð 240 ð 145 € 177 ± 209 Ñ 241 ñ 146 € 178 ² 210 Ò 242 ò 147 € 179 ³ 211 Ó 243 ó 148 € 180 ´ 212 Ô 244 ô 149 € 181 µ 213 Õ 245 õ 150 € 182 ¶ 214 Ö 246 ö 151 € 183 · 215 × 247 ÷ 152 € 184 ¸ 216 Ø 248 ø 153 € 185 ¹ 217 Ù 249 ù 154 € 186 º 218 Ú 250 ú 155 € 187 » 219 Û 251 û 156 € 188 ¼ 220 Ü 252 ü 157 € 189 ½ 221 Ý 253 ý 158 € 190 ¾ 222 Þ 254 þ 159 € 191 ¿ 223 ß 255 ÿ
Observe que os códigos para À , Á , Â , Ä , Å correspondem aos códigos 192, 192, 193 ... , 197. Deu para pegar a idéia ??? A função deve receber o texto e verificar caracterer por caracter contra os códigos da tabela a cima , substituindo-os pelos respectivos caracteres sem acento... Vamos a dita cuja.
Private Function Limpa_Texto(texto As String) Dim texto_limpo As String Dim Codigo_Tabela_Asc As Integer Dim posicao As Long
For posicao = 1 To Len(texto) Codigo_Tabela_Asc = Asc(Mid(texto, posicao, 1)) Select Case Codigo_Tabela_Asc Case 192 To 197 Codigo_Tabela_Asc = Asc("A") Case 224 To 229 Codigo_Tabela_Asc = Asc("a") Case 200 To 203 Codigo_Tabela_Asc = Asc("E") Case 232 To 235 Codigo_Tabela_Asc = Asc("e") Case 204 To 207 Codigo_Tabela_Asc = Asc("I") Case 236 To 239 Codigo_Tabela_Asc = Asc("i") Case 199 Codigo_Tabela_Asc = Asc("C") Case 231 Codigo_Tabela_Asc = Asc("c") End Select texto_limpo = texto_limpo & Chr(Codigo_Tabela_Asc) Next
Limpa_Texto = texto_limpo
End Function
A função acima não esta completa , eu apenas mostrei como substituir as ocorrências de acentos nos caracteres: A,a,E,e,I,i,Ç e ç. Cabe a você agora expandir a função de acordo com sua necessidade. Quer saber como usar ???
Bem basta chamar a função passando o texto a ser limpo , assim : texto_limpo = limpa_Texto(texto)
|
|
|
|
|