【问题标题】:Replace ASCII codes and HTML tags in Java在 Java 中替换 ASCII 代码和 HTML 标记
【发布时间】:2020-12-14 22:18:27
【问题描述】:

如果不使用StringEscapeUtils,我怎样才能达到低于预期的结果?

public class Main {
    public static void main(String[] args) throws Exception {
      String str = "<p><b>Send FWB <br><br> &#40;if AWB has COU SHC, <br> if ticked , will send FWB&#41;</b></p>";
      str = str.replaceAll("\\<.*?\\>", "");
      System.out.println("After removing HTML Tags: " + str);
    }
}

当前结果:

After removing HTML Tags: Send FWB  &#40;if AWB has COU SHC,  if ticked , will send FWB&#41;

预期结果:

After removing HTML Tags: Send FWB  if AWB has COU SHC,  if ticked , will send FWB;

已检查: How to unescape HTML character entities in Java?


PS:这只是一个示例,输入可能会有所不同。

【问题讨论】:

  • 您的正则表达式用于 hml 标签 html 实体将匹配您未替换的 &amp;.*; 之类的内容
  • 试试str = str.replaceAll("\\&lt;.*?\\&gt;|&amp;.*;", "");
  • 以上只返回After removing HTML Tags: Send FWB
  • 我错了:str = str.replaceAll("\\&lt;.*?\\&gt;|&amp;.*?;", ""); 应该可以。在regexr.com 上对其进行了测试

标签: java html string replace ascii


【解决方案1】:

您的正则表达式用于 html 标记 &lt;something&gt; 将被匹配,而 html 实体将不匹配。他们的模式类似于&amp;.*?;,您不会替换它。

这应该可以解决您的问题:

str = str.replaceAll("\\<.*?\\>|&.*?;", "");

如果您想在沙盒中对此进行试验,请尝试 regxr.com 并使用 (\&lt;.*?\&gt;)|(&amp;.*?;) 括号使两个不同的捕获组易于在工具上识别,并且在您的代码中不需要。请注意,\ 不需要在该沙盒操场上进行转义,但它必须在您的代码中,因为它在字符串中。

【讨论】:

    猜你喜欢
    • 2010-10-17
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    相关资源
    最近更新 更多