Ver Mensaje Individual
  #3 (permalink)  
Antiguo 16/05/2011, 10:43
Avatar de Hugo_Euan
Hugo_Euan
 
Fecha de Ingreso: abril-2011
Ubicación: Mérida, Yucatán, México
Mensajes: 193
Antigüedad: 13 años, 8 meses
Puntos: 71
Respuesta: Reemplazar caracteres

Woraleeee, algo asi como un word que reemplaza las palabras, pero en vez de palabras quieres reemplazar un caracter, buenooo, veamos....

y lo primero que tenemos que hacer es crear un array con los caracteres "no validos" y los caracteres por los que se van a reemplazar, y un timer que verificara el contenido del text para reemplazarlo, para el array tratemos de minimizar un poco en vez de el clasico array de mil lineas.

arr[0]= 1
arr[1]= 2
arr[2]= 3
arr[3]= n..


usemos un JSON, por lo cual queda de la siguiente manera...

Código Javascript:
Ver original
  1. var MyWords= {'Find':['#', '&', '$', '%', '/', '{', '}'], 'Replace':['a', 'b', 'c', 'd', 'e', 'f', 'g']};
  2. var tiempo = setInterval('PARSE_CHARACTER();', 10);

una vez hecho esto construiremos una función que obtendra el valor del primer textbox y validara mediante el array que caracter no es válido y lo reemplazara, asignando el nuevo valor al textbox automático

Código Javascript:
Ver original
  1. function PARSE_CHARACTER(){
  2.    try{
  3.       var TempTxt=document.getElementById('txt_manual');
  4.       var MyString=TempTxt.value;
  5.       var NewText;
  6.       for(var i=0;i<MyWords.Find.length;i++){
  7.          while(MyString.indexOf(MyWords.Find[i])>-1) {
  8.             pos = MyString.indexOf(MyWords.Find[i]);
  9.             MyString = "" + (MyString.substring(0, pos) + MyWords.Replace[i] +
  10.             MyString.substring((pos + MyWords.Find[i].length), MyString.length));
  11.       }
  12.    }
  13.    var MyTempTxt=document.getElementById('txt_auto');
  14.    MyTempTxt.value=MyString;
  15.    }catch(e){
  16.       alert("UNKNOW EXCEPTION");
  17.    }
  18. }

paso por paso, lo primero que hace esta función es obtener el valor del primer textbox y asignarselo a la variable MyString.

var TempTxt=document.getElementById('txt_manual');
var MyString=TempTxt.value;


Mediante el For recorremos todos los valores del array y mediante el while buscamos si existe cada una de ellas en MyString

for(var i=0;i<MyWords.Find.length;i++){
while(MyString.indexOf(MyWords.Find[i])>-1) {


si existe substituimos...

MyString = "" + (MyString.substring(0, pos) + MyWords.Replace[i] +
MyString.substring((pos + MyWords.Find[i].length), MyString.length));


y el nuevo valor se lo asignamos al txt_auto...

var MyTempTxt=document.getElementById('txt_auto');
MyTempTxt.value=MyString;


el bloque try{}catch(e){} nos enviara un alerta pos si algo sale mal
alert("UNKNOW EXCEPTION"); que no lo creo...

y nuestro código juntadito y armadito, queda de la siguiente manera...

Código HTML:
Ver original
  1. <title>prueba reemplazar</title>
  2. var MyWords= {'Find':['#', '&', '$', '%', '/', '{', '}'], 'Replace':['a', 'b', 'c', 'd', 'e', 'f', 'g']};
  3. var tiempo = setInterval('PARSE_CHARACTER();', 10);
  4.  
  5. function PARSE_CHARACTER(){
  6.    try{
  7.       var TempTxt=document.getElementById('txt_manual');
  8.       var MyString=TempTxt.value;
  9.       var NewText;
  10.       for(var i=0;i<MyWords.Find.length;i++){
  11.          while(MyString.indexOf(MyWords.Find[i])>-1) {
  12.             pos = MyString.indexOf(MyWords.Find[i]);
  13.             MyString = "" + (MyString.substring(0, pos) + MyWords.Replace[i] +
  14.             MyString.substring((pos + MyWords.Find[i].length), MyString.length));
  15.         }
  16.       }
  17.       var MyTempTxt=document.getElementById('txt_auto');
  18.       MyTempTxt.value=MyString;
  19.    }catch(e){
  20.  
  21.    }
  22. }
  23. </head>
  24. <input type="text" id="txt_manual" />
  25. <input type="text" id="txt_auto" />
  26. </body>
  27. </html>

espero que te sea de ayuda.... y cualquier cosa comentas...

EXITO !!!
__________________
Se acepta Karma (:

Si Dios con nosotros, quien contra nosotros !!