Ver Mensaje Individual
  #135 (permalink)  
Antiguo 11/06/2003, 15:24
Avatar de Kaopectate
Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 24 años, 8 meses
Puntos: 38
137.- Comparar las palabras de dos listas

P: ¿Como puedo comparar las palabras de un elemento textarea respecto a las palabras existentes en otro textarea?

R:

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">

   function 
separa(sTxt, sSep){
    var 
sTx2 = "";
    var 
bPalabra = false;
    for (var 
j = 0; j < sTxt.length; j++){
     if (
sSep.indexOf(sTxt.charAt(j)) != -1){
      if (
bPalabra) sTx2 += " ";
      
bPalabra = false;
     } else {
      
bPalabra = true;
      
sTx2 += sTxt.charAt(j);
     }
    }
    return 
sTx2;
   }

   function 
comunes(aIzq, aDer){
    var 
i, j, nRes, sPal;
    
nRes = 0;
    
sPal = "";
    for (
i = 0; i < aIzq.length; i++)
     for (
j = 0; j < aDer.length; j++)
      if (
aIzq[i] == aDer[j])
       if (
sPal.indexOf(aIzq[i]) == -1){
        
nRes++;
        
sPal += " " + aIzq[i];
       }
    
document.frm.comunes.value = String(nRes);
   }

   function 
soloEnA(aIzq, aDer){
    var 
i, j, nRes, sPal, bPresente;
    
nRes = 0;
    
sPal = "";
    for (
i = 0; i < aIzq.length; i++){
     
bPresente = false;
     for (
j = 0; (j < aDer.length) && !bPresente; j++)
      
bPresente = (aIzq[i] == aDer[j])
     if (!
bPresente && (sPal.indexOf(aIzq[i]) == -1)){
      
nRes++;
      
sPal += " " + aIzq[i];
     }
    }
    
document.frm.soloA.value = String(nRes);
   }

   function 
soloEnB(aIzq, aDer){
    var 
i, j, nRes, sPal, bPresente;
    
nRes = 0;
    
sPal = "";
    for (
i = 0; i < aDer.length; i++){
     
bPresente = false;
     for (
j = 0; (j < aIzq.length) && !bPresente; j++)
      
bPresente = (aDer[i] == aIzq[j])
     if (!
bPresente && (sPal.indexOf(aDer[i]) == -1)){
      
nRes++;
      
sPal += " " + aDer[i];
     }
    }
    
document.frm.soloB.value = String(nRes);
   }

   function 
calcula(){
    var 
sIzq, sDer, aIzq, aDer;
    
sIzq = separa(document.frm.texto.value, ";.,:");
    
sDer = separa(document.frm.diccionario.value, ";.,:");
    
sIzq = sIzq.replace(/[rnf]/g, " ");
    
sDer = sDer.replace(/[rnf]/g, " ");
    
aIzq = sIzq.split(" ");
    
aDer = sDer.split(" ");
    
comunes(aIzq, aDer);
    
soloEnA(aIzq, aDer);
    
soloEnB(aIzq, aDer);
   }
  
</script>
 </head>
 <body>
  <form name="frm">
   <table border="0">
    <tr>
     <td align="center">
      Area A
     </td>
     <td align="center">
      Area B
     </td>
    </tr>
    <tr>
     <td align="left">
      <textarea name="texto" onkeyup="calcula()"></textarea>
     </td>
     <td align="right">
      <textarea name="diccionario" onkeyup="calcula()"></textarea>
     </td>
    </tr>
    <tr>
     <td colspan="2" align="center">
      <table border="0">
       <tr>
        <td align="left">
         En A y no en B
        </td>
        <td align="center">
         Comunes
        </td>
        <td align="right">
         En B y no en A
        </td>
       </tr>
       <tr>
        <td align="left">
         <input type="text" name="soloA">
        </td>
        <td align="center">
         <input type="text" name="comunes">
        </td>
        <td align="right">
         <input type="text" name="soloB">
        </td>
       </tr>
      </table>
     </td>
    </tr>
   </table>
  </form>
 </body>
</html> 

Última edición por Kaopectate; 11/06/2003 a las 15:21