Foros del Web » Programando para Internet » Javascript »

Reemplazar caracteres

Estas en el tema de Reemplazar caracteres en el foro de Javascript en Foros del Web. Muy buenas Busco vuestra ayuda en JavaScript, porque no tengo idea de casi nada en ello (me tengo que poner a estudiarlo ya mismo). Se ...
  #1 (permalink)  
Antiguo 16/05/2011, 02:55
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Pregunta Reemplazar caracteres

Muy buenas

Busco vuestra ayuda en JavaScript, porque no tengo idea de casi nada en ello (me tengo que poner a estudiarlo ya mismo). Se trata de que yo quiero acabar una pequeña función para un cliente mio, pero en javascript.

Se que se puede en PHP, pero no como el lo quiere, y se que se puede en javascript porque hace tiempo vi justo lo que yo estoy buscando ahora y ahora no lo encuentro.

Se trata de una función que me reemplaza el texto en tiempo real (es decir, a la vez que escribo en una caja de texto) con unos valores de un array.

Explico:
  • Tengo 2 cajas de texto, en 1 escribo el texto y en la otra en tiempo real la función javascript busca caracteres que coincidan con los que tiene el en un array, y reemplazarlos.

Gracias de antemano y espero vuestras ideas,
Alex
  #2 (permalink)  
Antiguo 16/05/2011, 10:36
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Reemplazar caracteres

Si pudieras explicar un poco más lo que quieres hacer... ¿Habría que reemplazar el texto entero o sólo porciones?
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 16/05/2011, 10:43
Avatar de Hugo_Euan  
Fecha de Ingreso: abril-2011
Ubicación: Mérida, Yucatán, México
Mensajes: 193
Antigüedad: 13 años
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 !!
  #4 (permalink)  
Antiguo 16/05/2011, 13:38
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Reemplazar caracteres

yo todo esto lo veo mas sencillo.
dos matrices (valores a reemplazar y valores por los que se reemplazan) y una expresión regular con los valores que hay que reemplazar en la cadena. se usa el método exec() esto nos devuelve null si no hay coincidencia y si la hay nos devuelve la coincidencia. este valor lo comparamos con matriz de valores a reemplazar, para ello se usa un ciclo for que recorra la matriz a reemplazar. si son iguales, se usar el método replace() y reemplamos el valor de la matriz a reemplazar, por el valor de la matriz de reemplazo.
probablemente habrá alguna otra cosa que hacer, pero en términos generales esta es la idea
  #5 (permalink)  
Antiguo 22/05/2011, 16:45
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Reemplazar caracteres

Gracias a los dos, es genial.... y mas para un principiante como yo en javascript. Sigo con 1 duda... necesito esconder el codigo/funcion que hace todo esto del Ver Fuente/View Source, por temas de seguridad a peticion del cliente.

Alguna sugerencia para esto? (Da igual que tenga que recurrir a mas lenguajes de programacion o incluso cambiar el que uso actualmente, mientras funcione igual)
  #6 (permalink)  
Antiguo 22/05/2011, 17:15
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Reemplazar caracteres

Cita:
Iniciado por w0rldart Ver Mensaje
Gracias a los dos, es genial.... y mas para un principiante como yo en javascript. Sigo con 1 duda... necesito esconder el codigo/funcion que hace todo esto del Ver Fuente/View Source, por temas de seguridad a peticion del cliente.

Alguna sugerencia para esto? (Da igual que tenga que recurrir a mas lenguajes de programacion o incluso cambiar el que uso actualmente, mientras funcione igual)
lo que puedes hacer es ofuscar el js
  #7 (permalink)  
Antiguo 22/05/2011, 23:29
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Reemplazar caracteres

Cita:
Iniciado por w0rldart
(Da igual que tenga que recurrir a mas lenguajes de programacion o incluso cambiar el que uso actualmente, mientras funcione igual)
Como no lo quieras pasar por el servidor... Quizás puedas con AJAX.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #8 (permalink)  
Antiguo 23/05/2011, 00:15
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Reemplazar caracteres

Lo sabia, pero queria escuchar vuestras sugerencias.

Yo ya tengo un script server side en php para esto, pero no me gusta que no remplaza al momento... tengo que ir siempre con el boton de submit, si tenei alguna sugerencia... encantado de escucharla

Y con lo de AJAX, voy a hecharle un vistazo a ver si puedo hacer algo con ello

Gracias
  #9 (permalink)  
Antiguo 23/05/2011, 09:24
Avatar de Hugo_Euan  
Fecha de Ingreso: abril-2011
Ubicación: Mérida, Yucatán, México
Mensajes: 193
Antigüedad: 13 años
Puntos: 71
Respuesta: Reemplazar caracteres

Lo que dice Isa es de maravilla Worldart, es mejor que obfusques el código, por que eso de ocultar el "Ver código fuente" no es tan seguro como parece y no es... como decirlo ?

No es del todo... jejeje =P, a lo que voy es que siempre habrá alguna forma de ver el famoso código, asi que es mejor usar una técnica de obfuscación...

SALUDOS y EXITO !!!!
__________________
Se acepta Karma (:

Si Dios con nosotros, quien contra nosotros !!
  #10 (permalink)  
Antiguo 23/05/2011, 11:10
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 14 años, 10 meses
Puntos: 20
Respuesta: Reemplazar caracteres

Gracias, despues de obtener toda vuestra ayuda, creo que voy a tener que recurir al metodo server side. Mientras tanto seguire buscando alternativas

Gracias,
w0rldart

Etiquetas: caracteres, reemplazar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:42.