我需要从源中获取文本作为纯文本并将其显示在 JTextPane 或 JEditorPane 中。源文本不是 HTML,但将包含方括号之间的 URL,需要显示这些 URL 并用作超链接。
我考虑过将 Pane 的内容类型设置为 text/html 并围绕 html 标签中的 url,但这最终会忽略换行符,这是一件坏事,而且我不知道如何去替换换行符带有“<br/>
”的字符。有没有简单的方法可以做到这一点?
如果这样做意味着扫描整个字符串,那么自定义文本的显示方式不是更好吗?
所以我也考虑了制作我自己的 EditorKit 的路线,就像 this thread 中提到的 starturtle 一样。 ,但他没有解释如何做到这一点。我查看了 this article 中的代码,但是看起来工作量很大,这是我应该走的路线吗?
有人曾经这样做过吗?有什么建议吗?转换为html好还是自定义显示好?
最佳答案
i'm not sure how to go about replacing newline characters with "<br/>". Is there an easy wat to do that?
您可以使用 Java 正则表达式来做到这一点:
String raw = "...";
Pattern p = Pattern.compile("\n");
String html = "<HTML>" + p.matcher(raw).replaceAll("<BR>") + "</HTML>" ;
我冒昧地为您添加了 HTML 包装器。
<小时/>编辑:
为了好玩,我接受了奥斯卡的观点并尝试了一下:
Pattern p = Pattern.compile("\\[([^\\]]*)\\]");
raw = p.matcher(raw).replaceAll("<a href=\"$1\">$1</a>");
关于java - 在java的JTextPane中显示没有html的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1197580/