Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] comparar 2 strings

Estas en el tema de comparar 2 strings en el foro de Javascript en Foros del Web. Buen dia compañeros, Vengo una duda a ver si me pueden ayudar, necesito que al comparar dos string una funcion busque las palabras, lineas, oraciones ...
  #1 (permalink)  
Antiguo 08/03/2017, 08:41
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta comparar 2 strings

Buen dia compañeros,

Vengo una duda a ver si me pueden ayudar, necesito que al comparar dos string una funcion busque las palabras, lineas, oraciones o caracteres iguales y los elimine solo dejando los que no son iguales, tengo esta funcion:

Código HTML:
<script type="text/javascript">

var str="Tengo roja  una casa roja, con la puerta roja ";
var n=str.replace(/roja/g,"");
alert(n);

</script> 
Obviamente busca la palabra roja y la elimina, Pero los string los recojo de unos textarea que viene una base de datos, estos contienen datos de configuraciones, pero son extensos, tienen mucha informacion, y tengo muy pocos conocimientos de javascript y no se como poner las dos variables de los de textarea en la funcion, quisiera tomar los datos de los dos textarea y hacer el proceso de eliminar todo lo que sea igual uno con el otro y que se muestre el resultado en un tercer textarea, solo con lo que no la diferencia entre los dos, pero no como realizarlo, nisiquiera se si esta funcion haga ese proceso, les agradeceria si me pueden ayudar en este caso.

Muchas Gracias de antemano por su gran ayuda
  #2 (permalink)  
Antiguo 08/03/2017, 11:12
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: comparar 2 strings

Podrías formar dos arreglos a partir de ambos textos, utilizando el método .split(), hacer una copia del primero, recorrer al segundo y verificar en cada iteración que, el elemento evaluado, no se encuentre en la copia del primer arreglo; de ser así, lo adhieres al mismo y, finalmente, unes a todos los elementos de ese arreglo final utilizando el método .join().
Código Javascript:
Ver original
  1. var a = "hola mundo bye world",
  2.     b = "hola amigos bye buddy",
  3.     ax = a.split(" "),
  4.     bx = b.split(" "),
  5.     c = ax;
  6.    
  7. bx.forEach(function(w){
  8.     if (c.indexOf(w) < 0){
  9.         c.push(w);
  10.     }
  11. });
  12.  
  13. console.log(c.join(" ")); //hola mundo bye world amigos buddy

También puedes trabajar directamente con el primer arreglo en lugar de hacer una copia.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 08/03/2017, 12:18
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta Respuesta: comparar 2 strings

Cita:
Iniciado por Alexis88 Ver Mensaje
Podrías formar dos arreglos a partir de ambos textos, utilizando el método .split(), hacer una copia del primero, recorrer al segundo y verificar en cada iteración que, el elemento evaluado, no se encuentre en la copia del primer arreglo; de ser así, lo adhieres al mismo y, finalmente, unes a todos los elementos de ese arreglo final utilizando el método .join().
Código Javascript:
Ver original
  1. var a = "hola mundo bye world",
  2.     b = "hola amigos bye buddy",
  3.     ax = a.split(" "),
  4.     bx = b.split(" "),
  5.     c = ax;
  6.    
  7. bx.forEach(function(w){
  8.     if (c.indexOf(w) < 0){
  9.         c.push(w);
  10.     }
  11. });
  12.  
  13. console.log(c.join(" ")); //hola mundo bye world amigos buddy

También puedes trabajar directamente con el primer arreglo en lugar de hacer una copia.

Hola muchas gracias por responder, no entiendo muy bien el codigo, pero necesito que los elementos iguales se borren y solo queden los desiguales,

es como que:

el primer string:

Un texto es una composición de signos codificados en un sistema de escritura (como un alfabeto) que forma una unidad de sentido. Su tamaño puede ser variable.

También es una composición de caracteres imprimibles (con grafema) generados por un algoritmo de cifrado que, aunque no tienen sentido para cualquier persona, sí puede ser descifrado por su destinatario original. En otras palabras, un texto es un entramado de signos con una intención comunicativa que adquiere sentido en determinado contexto.


el segundo string:

Su tamaño puede ser variable.

sí puede ser descifrado por su destinatario original.

un texto es un entramado de signos con una intención comunicativa que


y el resultado sea:

Un texto es una composición de signos codificados en un sistema de escritura (como un alfabeto) que forma una unidad de sentido.

También es una composición de caracteres imprimibles (con grafema) generados por un algoritmo de cifrado que, aunque no tienen sentido para cualquier persona,. En otras palabras, adquiere sentido en determinado contexto.

alli se le elimino parte del primer string ya que se encontraba en el segundo string

eso es mas o menos lo que necesito y no se como hacer
  #4 (permalink)  
Antiguo 08/03/2017, 19:37
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: comparar 2 strings

Es lo que te he explicado. Lee lo que escribí antes del código.

Por cierto, ¿lo probaste?
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 09/03/2017, 07:27
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta Respuesta: comparar 2 strings

Cita:
Iniciado por Alexis88 Ver Mensaje
Es lo que te he explicado. Lee lo que escribí antes del código.

Por cierto, ¿lo probaste?

hola Alexis88,

si lo probe gracias de verdad, pero el resultado que busco no deberia ser este:

//hola mundo bye world amigos buddy

Si no mas o menos este:

// amigos buddy

Que es lo que no contiene la primera variable, y recuerda que son strings que contienen varias lineas.
  #6 (permalink)  
Antiguo 09/03/2017, 09:21
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: comparar 2 strings

Ya veo; aunque, por el resultado del ejemplo que pusiste, el resultado debería ser "mundo world amigos buddy" ya que "hola" y "bye" se repiten en ambas, lo que es equivalente a quitar las oraciones en rojo que eliminaste de los dos textos de tu ejemplo.

Dadas así las condiciones, lo que habría que hacer es, primero; recorrer al arreglo número uno, verificar en cada iteración que cada palabra no se encuentre en el arreglo número dos y, a las que cumplan dicha condición, asignarlas a un tercer arreglo. Luego, se repite el proceso pero esta vez leyendo los datos del arreglo número dos y comparándolos con los del arreglo número uno.
Código Javascript:
Ver original
  1. var a = "hola mundo bye world",
  2.     b = "hola amigos bye buddy",
  3.     ax = a.split(" "),
  4.     bx = b.split(" "),
  5.     c = [];
  6.    
  7. ax.forEach(function(w){
  8.     if (b.indexOf(w) < 0){
  9.         c.push(w);
  10.     }
  11. });
  12.  
  13. bx.forEach(function(w){
  14.     if (a.indexOf(w) < 0){
  15.         c.push(w);
  16.     }
  17. });
  18.  
  19. console.log(c.join(" ")); //mundo world amigos buddy

DEMO

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 09/03/2017, 12:17
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 0
Exclamación Respuesta: comparar 2 strings

Cita:
Iniciado por Alexis88 Ver Mensaje
Ya veo; aunque, por el resultado del ejemplo que pusiste, el resultado debería ser "mundo world amigos buddy" ya que "hola" y "bye" se repiten en ambas, lo que es equivalente a quitar las oraciones en rojo que eliminaste de los dos textos de tu ejemplo.

Dadas así las condiciones, lo que habría que hacer es, primero; recorrer al arreglo número uno, verificar en cada iteración que cada palabra no se encuentre en el arreglo número dos y, a las que cumplan dicha condición, asignarlas a un tercer arreglo. Luego, se repite el proceso pero esta vez leyendo los datos del arreglo número dos y comparándolos con los del arreglo número uno.
Código Javascript:
Ver original
  1. var a = "hola mundo bye world",
  2.     b = "hola amigos bye buddy",
  3.     ax = a.split(" "),
  4.     bx = b.split(" "),
  5.     c = [];
  6.    
  7. ax.forEach(function(w){
  8.     if (b.indexOf(w) < 0){
  9.         c.push(w);
  10.     }
  11. });
  12.  
  13. bx.forEach(function(w){
  14.     if (a.indexOf(w) < 0){
  15.         c.push(w);
  16.     }
  17. });
  18.  
  19. console.log(c.join(" ")); //mundo world amigos buddy

DEMO

Hola Alexis88

Este si funciona de verdad eres brillante amigo de verdad genial, y me costo un poco adaptarlo a mi conveniencia pero lo logre y da un resultado mejor del que necesitaba, ya que separa lo que no esta con lo que si esta, o sea, es mas completo de esta manera, solo tiene un pequeño detalle como podria hacer que lo que esta aqui:

ax.forEach(function(w){
if (b.indexOf(w) < 0){
c.push(w);
}
});


deje al menos 3 o mas lineas de por medio entre este.


bx.forEach(function(w){
if (a.indexOf(w) < 0){
c.push(w);
}
});

para que quede asi mas o menos

//mundo world

_____0______

//amigos buddy

con ese espacio en medio.

Con eso si separaría un poco mejor visualmente los datos, esto seria lo ultimo de esta funcion mi amigo, Pero de verdad muchas gracias eres un genio
  #8 (permalink)  
Antiguo 09/03/2017, 14:14
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: comparar 2 strings

Básicamente tendrías que añadir los saltos de línea al arreglo final luego de que recorras al primer arreglo y antes de recorrer al segundo.
Código Javascript:
Ver original
  1. ax.forEach(function(w){
  2.     if (b.indexOf(w) < 0){
  3.         c.push(w);
  4.     }
  5. });
  6.  
  7. c.push("<br /><br /><br /><br />");
  8.  
  9. bx.forEach(function(w){
  10.     if (a.indexOf(w) < 0){
  11.         c.push(w);
  12.     }
  13. });

DEMO

Para mostrar el resultado en un <textarea>, los saltos de línea tienen que ser de la forma \n.
Código Javascript:
Ver original
  1. c.push("\n\n\n\r");
DEMO

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 10/03/2017, 06:25
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 0
De acuerdo Respuesta: comparar 2 strings

Cita:
Iniciado por Alexis88 Ver Mensaje
Básicamente tendrías que añadir los saltos de línea al arreglo final luego de que recorras al primer arreglo y antes de recorrer al segundo.
Código Javascript:
Ver original
  1. ax.forEach(function(w){
  2.     if (b.indexOf(w) < 0){
  3.         c.push(w);
  4.     }
  5. });
  6.  
  7. c.push("<br /><br /><br /><br />");
  8.  
  9. bx.forEach(function(w){
  10.     if (a.indexOf(w) < 0){
  11.         c.push(w);
  12.     }
  13. });

DEMO

Para mostrar el resultado en un <textarea>, los saltos de línea tienen que ser de la forma \n.
Código Javascript:
Ver original
  1. c.push("\n\n\n\r");
DEMO


Listo amigo sinceramente muchísimas gracias de verdad eres el mejor.

Etiquetas: forma, funcion, strings, text
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 17:55.