Mmmhh, en Java si se me ocurren formas sencillas de hacerlo.
Pero claro, Java incorpora librerías y clases que bien usadas, te hacen la vida muy fácil.
Por ejemplo, la clase Scanner que normalmente usamos para leer por teclado, se le puede pasar un String y pedir que nos vaya dando palabras de una en una para ir comprobando si se encuentra en el diccionario.
El diccionario, si lo hacemos con un String, esta clase nos da el método contains() para con toda sencillez averiguar si la palabra existe en el diccionario.
Para resaltar las palabras coincidentes, mientras se comprueba si las palabras existen en el diccionario, se puede ir construyendo una copia del texto original en otro String, o mejor aún, en un StringBuilder.
Si se encuentra una palabra en el diccionario, la pasamos a la copia metiéndola entre corchetes por ejemplo.
Y si no se encuentra, la pasamos a la copia tal cual, sin resaltar nada.
public class Palabras {
public static void main(String[] args) {
String texto = "Este es un texto para probar un programa escrito en Java";
String diccionario = "texto programa Java";
Scanner sc = new Scanner(texto);
int contador = 0;
StringBuilder textoResaltado = new StringBuilder();
while (sc.hasNext()) {
String palabra = sc.next();
if (diccionario.contains(palabra)) {
textoResaltado.append(String.format("[%s] ", palabra));
contador++;
}
else
textoResaltado.append(String.format("%s ", palabra));
}
sc.close();
System.out.println("Texto original:\n" + texto);
System.out.println("\nDiccionario: " + diccionario);
System.out.println("\nCoincidencias: " + contador);
System.out.println("Texto con coincidendias resaltadas:\n" + textoResaltado.toString());
}
}
En pantalla, tendríamos este resultado:
Texto original:
Este es un texto para probar un programa escrito en Java
Diccionario: texto programa Java
Coincidencias: 3
Texto con coincidendias resaltadas:
Este es un [texto] para probar un [programa] escrito en [Java]