【发布时间】:2014-05-23 03:55:14
【问题描述】:
我有一个JLabel 我正在这样填充它
String descriptionText = StringEscapeUtils.escapeHtml(rule.getDescription());
descriptionText = descriptionText.replaceAll("\n", "<br>");
descriptionLbl.setText(String.format("<html>%s</html>", descriptionText));
在这种情况下,如果rule.getDescription() 返回类似"/* test */" 的结果,那么最终结果是一个空的JLabel?为什么是这样?我以为StringEscapeUtils#escapeHtml 会捕获所有转义字符。
【问题讨论】:
-
Hm.../* test */ 是 java 注释,但 OP 是在 HTML 内部谈论字符串内部。所以java注释语法是无关紧要的。
-
您是否尝试过在设置标签文本之前执行
System.out.println(descriptionText);以查看该字符串是否包含您期望的内容?还可以尝试将format调用的结果放入 String 变量中,以便您也可以将其打印出来进行确认。 -
@FrobberOfBits 是的。这很奇怪。我很好地在 /* 上进行查找和替换,但我想知道我是否会遇到其他一些疯狂的事情。我找不到任何可以解释为什么会发生这种情况的文档。
-
@Cogman 只是为了笑,你试过
/* test */
吗?我不能在这里给你答案,我只能表示同情,因为我在 Swing 应用程序中遇到了很多关于 HTML 的问题。如果可以的话,我会尽量避免它,因为它有很多边缘情况和奇怪的细节。