Tendrías primero que eliminar los elementos en las cadenas de texto que no sean caracteres alfabéticos, como las comas y puntos. También podrías incluir números, pero eso ya depende de ti. Luego, descompones a las cadenas a partir de los espacios en blanco, con lo cual tendrías dos arrays y, ya teniendo esto, los recorres y buscas las coincidencias.
Un pequeño ejemplo:
Código Javascript
:
Ver originalfunction repeticiones(foo, bar){
foo = foo
.toLowerCase()
.replace(/[^a-zÑñáéíóúÁÉÍÓÚÜü]+/g, " ")
.replace(/^\s+|\s+$/g, "");
bar = bar
.toLowerCase()
.replace(/[^a-zÑñáéíóúÁÉÍÓÚÜü]+/g, " ")
.replace(/^\s+|\s+$/g, "");
var arr1 = foo.split(" "),
arr2 = bar.split(" "),
l = arr1.length,
m = arr2.length,
c = 0;
for (var i = 0; i < l; i++){
for (var j = 0; j < m; j++){
if (arr2[j] == arr1[i]){
c++;
}
}
}
console.log("Hay " + c + " coincidencias"); //Imprimirá: Hay 7 coincidencias
}
repeticiones("Hola mundo, hoy es viernes.",
"hola mundo, es viernes. Sí, hoy es viernes.");
A la función le paso las dos cadenas a comparar, las convierto a minúsculas, reemplazo los caracteres no alfabéticos por espacios en blanco y elimino los espacios en blanco que existan tanto al inicio como al final de las cadenas. Enseguida, formo los arrays, descomponiendo las cadenas a partir de los espacios en blanco existentes, calculo el total de elementos de cada array y declaro una variable que utilizaré como acumulador para obtener el total de repeticiones.
Finalmente, recorro a ambos arrays, busco las coincidencias y, de haberlas, las voy contando en la variable acumuladora, cuyo resultado imprimo luego de terminados los bucles.
Saludos