Bom pessoal, obrigado pela ajuda.
Usei um pouquinho do que vcs me passaram, e cheguei ao seguinte resultado:
public class ValidaEntradaBlackList {
private List<BlackList> itensBlackList;
public String validaTexto(String texto, EntityManager em){
buscarItensBlackList(em);
for (int i = 0; i < itensBlackList.size() ; i++) {
texto = texto.toLowerCase().replaceAll("^" + itensBlackList.get(i).getItem().toLowerCase(), "*******");
texto = texto.toLowerCase().replaceAll("\\W" + itensBlackList.get(i).getItem().toLowerCase()+ "\\W", " ******* ");
texto = texto.toLowerCase().replaceAll(itensBlackList.get(i).getItem().toLowerCase().trim() + "\\W$", "*******");
}
return texto;
}
public void buscarItensBlackList(EntityManager em){
itensBlackList = (List<BlackList>)em.createQuery("select blk from BlackList blk").getResultList();
}
}
Apenas explicando, esta é uma classe alternativa onde eu tô pasando um EntityManager e a String que eu quero valdidar.
Busco todos os itens da blackList no banco no método buscarItensBlackList() e depois, comparo item por item no método validaTexto().
Não sei se é a melhor maneira de fazer, mas, pegou bonitinho o que eu precisava.
Nesta linha:
texto = texto.toLowerCase().replaceAll("^" + itensBlackList.get(i).getItem().toLowerCase(), "*******");
Pega uma palavra da blackList que esteja no INICIO da frase no texto que eu estou passando.
Nesta outra:
texto = texto.toLowerCase().replaceAll("\\W" + itensBlackList.get(i).getItem().toLowerCase()+ "\\W", " ******* ");
Pega uma palavra da blackList que não seja NEM INICIAL e NEM FINAL de frase no texto que eu estou passando.
E, por ultimo:
texto = texto.toLowerCase().replaceAll(itensBlackList.get(i).getItem().toLowerCase().trim() + "\\W$", "*******");
Pega uma palavra da blackList que esteja no FINAL da frase no texto que eu estou passando.
Acho que é isso.
Muito obrigado pela ajuda de douglas_vidotto e gomesrod.