[英]How to remove \u200B (Zero Length Whitespace Unicode Character) from String in Java?
我的应用程序使用Spring Integration从Outlook邮箱进行电子邮件轮询。
因为,它从外部系统(Outlook)接收字符串( 电子邮件正文 ),所以我无法控制它。
例如,
String emailBodyStr= "rejected by sundar14-\u200B.";
现在我试图从此String中删除 unicode字符\\ u200B 。
我已经尝试过了什么。
尝试#1:
emailBodyStr = emailBodyStr.replaceAll("\u200B", "");
尝试#2:
`emailBodyStr = emailBodyStr.replaceAll("\u200B", "").trim();`
尝试#3 (使用Apache Commons):
StringEscapeUtils.unescapeJava(emailBodyStr);
尝试#4:
StringEscapeUtils.unescapeJava(emailBodyStr).trim();
到目前为止没有任何工作 。
当我尝试使用下面的代码打印此字符串时。
logger.info("Comment BEFORE:{}",emailBodyStr);
logger.info("Comment AFTER :{}",emailBodyStr);
在Eclipse控制台中,它不打印unicode char,
评论之前:被sundar14-拒绝。
但是相同的代码在Linux控制台中打印unicode char,如下所示。
评论之前:被sundar14- \\ u200B拒绝。
我读了一些推荐str.replace()的例子,但请注意,例子使用的是javascript,PHP而不是 Java。
最后,我可以使用' Unicode Regex '删除' 零宽度空间 '字符。
String plainEmailBody = new String();
plainEmailBody = emailBodyStr.replaceAll("[\\p{Cf}]", "");
参考以查找Unicode字符的类别。
Java中的Character类列出了所有这些unicode类别。
注意1:当我从Outlook电子邮件正文中收到此字符串时 - 我的问题中列出的方法都没有奏效。
我的应用程序从外部系统( Outlook )接收字符串,所以我无法控制它。
注2:这个SO 答案帮助我了解了Unicode正则表达式 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.