簡體   English   中英

如何從Java中刪除字符串中的\\ u200B(零長度空白Unicode字符)?

[英]How to remove \u200B (Zero Length Whitespace Unicode Character) from String in Java?

我的應用程序使用Spring IntegrationOutlook郵箱進行電子郵件輪詢。

因為,它從外部系統(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字符的類別。

  1. 來自Java的字符類。

Java中的Character類列出了所有這些unicode類別。

在此輸入圖像描述

  1. 網站: http //www.fileformat.info/

人物類別

  1. 網站: http //www.regular-expressions.info/ => Unicode正則表達式

用於\\ u200B字符的Unicode正則表達式

注意1:當我從Outlook電子郵件正文中收到此字符串時 - 我的問題中列出的方法都沒有奏效。

我的應用程序從外部系統( Outlook )接收字符串,所以我無法控制它。

注2:這個SO 答案幫助我了解了Unicode正則表達式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM