Mi aplicación utiliza Spring Integration para el sondeo por correo electrónico desde el buzón de Outlook .
Como está recibiendo la cadena ( cuerpo del correo electrónico ) de un sistema externo (Outlook), no tengo control sobre ella.
Por ejemplo,
String emailBodyStr= "rejected by sundar14-\u200B.";Ahora estoy tratando de eliminar el carácter Unicode \u200B de esta Cadena.
Lo que ya probé.
Prueba #1:
emailBodyStr = emailBodyStr.replaceAll("\u200B", "");Prueba #2:
`emailBodyStr = emailBodyStr.replaceAll("\u200B", "").trim();`Prueba #3 (usando Apache Commons):
StringEscapeUtils.unescapeJava(emailBodyStr);Prueba #4:
StringEscapeUtils.unescapeJava(emailBodyStr).trim();Nada funcionó hasta ahora.
Cuando traté de imprimir esta Cadena usando el siguiente código.
logger.info("Comment BEFORE:{}",emailBodyStr); logger.info("Comment AFTER :{}",emailBodyStr);En la consola Eclipse , NO está imprimiendo unicode char,
Comentario ANTES: rechazado por sundar14-.
Pero el mismo código imprime el carácter Unicode en la consola de Linux como se muestra a continuación.
Comentario ANTES: rechazado por sundar14-\u200B.
Leí algunos ejemplos en los que se recomienda str.replace() , pero tenga en cuenta que los ejemplos usan javascript, PHP y no Java.
Finalmente, puedo eliminar el carácter ' Zero Width Space ' usando ' Unicode Regex '.
String plainEmailBody = new String(); plainEmailBody = emailBodyStr.replaceAll("[\\p{Cf}]", "");Referencia para encontrar la categoría de caracteres Unicode.
La clase de caracteres de Java enumera todas estas categorías Unicode.
Nota 1: Como recibí esta cadena del cuerpo del correo electrónico de Outlook , ninguno de los enfoques enumerados en mi pregunta funcionó.
Mi aplicación recibe una cadena de un sistema externo ( Outlook ), por lo que no tengo control sobre ella.
Nota 2: esta respuesta SO me ayudó a conocer las expresiones regulares Unicode .