Global $aOrig = StringSplit("Š,Œ,Ž,š,œ,ž,Ÿ,¥,µ,À,Á,Â,Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ð,Ñ,Ò,Ó,Ô,Õ,Ö,Ø,Ù,Ú,Û,Ü,Ý,ß,à,á,â,ã,ä,å,æ,ç,è,é,ê,ë,ì,í,î,ï,ð,ñ,ò,ó,ô,õ,ö,ø,ù,ú,û,ü,ý,ÿ", ",", 2) Global $aDest = StringSplit("S,O,Z,s,o,z,Y,Y,u,A,A,A,A,A,A,A,C,E,E,E,E,I,I,I,I,D,N,O,O,O,O,O,O,U,U,U,U,Y,s,a,a,a,a,a,a,a,c,e,e,e,e,i,i,i,i,o,n,o,o,o,o,o,o,u,u,u,u,y,y", ",", 2) ;Versiones codificadas Global $aOrigC[UBound($aOrig)], $aDestC[UBound($aDest)] For $i = 0 To UBound($aOrig)-1 $aOrigC[$i] = AscW($aOrig[$i]) $aDestC[$i] = AscW($aDest[$i]) Next $dict = ObjCreate("Scripting.Dictionary") If Not IsObj($dict) Then MsgBox(48, "Error", "¡El Diccionario no se ha podido crear!") Exit EndIf For $i = 0 To Ubound($aOrig)-1 $dict.Add($aOrigC[$i], $aDestC[$i]) Next ;$entrada = "Eštê ES UÑ TÈXTØ Ðè PRUEBAÁEÉOÓIÍ€ÝÔ¥" $entrada = FileRead("D:\Programacion\AutoIt\Cadenas\DonQuijote.txt") $tIni = TimerInit() $salida = _MultiTexto($entrada) $tFin = TimerDiff($tIni) ConsoleWrite("Leyendo el texto muchas veces: " & Round($tFin/1000, 3) & @CRLF) ConsoleWrite(StringLeft($salida,100) & @CRLF) $tIni = TimerInit() $salida = _MultiCarArr($entrada) $tFin = TimerDiff($tIni) ConsoleWrite("Leyendo cada carácter - arrays: " & Round($tFin/1000, 3) & @CRLF) ConsoleWrite(StringLeft($salida,100) & @CRLF) $tIni = TimerInit() $salida = _MultiCarDict($entrada) $tFin = TimerDiff($tIni) ConsoleWrite("Leyendo cada carácter - diccionario: " & Round($tFin/1000, 3) & @CRLF) ConsoleWrite(StringLeft($salida,100) & @CRLF) $dict.RemoveAll() $dict = 0 Func _MultiTexto($Texto) For $i = 0 To Ubound($aOrig)-1 $Texto = StringReplace($Texto, $aOrig[$i], $aDest[$i], 0, 1) Next Return $Texto EndFunc Func _MultiCarArr($Texto) Local $aTexto = StringToASCIIArray($Texto), $ubO = Ubound($aOrig) For $ci = 0 To UBound($aTexto)-1 $i = 0 $c = $aTexto[$ci] Do $i += 1 Until $i = $ubO Or $aOrigC[$i] = $c If $i < $ubO Then $aTexto[$ci] = $aDestC[$i] Next Return StringFromASCIIArray($aTexto) EndFunc Func _MultiCarDict($Texto) Local $r, $aTexto = StringToASCIIArray($Texto) For $c = 0 To UBound($aTexto)-1 $r = $aTexto[$c] If $dict.Exists($r) Then $aTexto[$c] = $dict.item($r) Next Return StringFromASCIIArray($aTexto) EndFunc ;~ Func _MultiCarDict($Texto) ;~ Local $r, $aTexto = StringToASCIIArray($Texto) ;~ For $c = 0 To UBound($aTexto)-1 ;~ $r = $dict.item($aTexto[$c]) ;~ If $r Then $aTexto[$c] = $r ;~ Next ;~ Return StringFromASCIIArray($aTexto) ;~ EndFunc