gpt4 book ai didi

java - 如何从 Java 中的字符串中删除\u200B(零长度空白 Unicode 字符)?

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:01 29 4
gpt4 key购买 nike

我的应用程序正在使用 Spring IntegrationOutlook 邮箱进行电子邮件轮询。

因为它正在从外部系统 (Outlook) 接收字符串(电子邮件正文),所以我无法控制它。

例如,

String emailBodyStr= "rejected by sundar14-\u200B.";

现在我正尝试从该字符串中删除 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 字符,

Comment BEFORE:rejected by sundar14-​.

但相同的代码在 Linux 控制台 中打印 unicode 字符,如下所示。

Comment BEFORE:rejected by sundar14-\u200B.

我阅读了一些建议使用 str.replace() 的示例,但请注意,这些示例使用的是 javascript、PHP不是 Java。

最佳答案

最后,我能够删除“Zero Width Space” ' 使用 ' Unicode Regex 的字符'.

String plainEmailBody = new String();
plainEmailBody = emailBodyStr.replaceAll("[\\p{Cf}]", "");

查找 Unicode 字符类别的引用。

  1. 来自 Java 的字符类。

Character Java 中的类列出了所有这些 un​​icode 类别。

enter image description here

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

Character category

  1. 网站: http://www.regular-expressions.info/ => Unicode 正则表达式

Unicode Regex for \u200B character

注意 1:当我从 Outlook 电子邮件正文 收到此字符串时 - 我的问题中列出的方法均未有效。 p>

My application is receiving a String from an external system (Outlook), So I have no control over it.

注意 2: 这个 SO answer帮助我了解了 Unicode 正则表达式

关于java - 如何从 Java 中的字符串中删除\u200B(零长度空白 Unicode 字符)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42960282/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com