[英]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.