Java BBCode库

有没有人使用过BBCode的优秀Java实现? 我在看

  1. javabbcode :没什么好看的
  2. kefir-bb :列为alpha
  3. JBoss源代码中的BBcode解析器。

还有更好的选择吗?

当前版本的KefirBB 0.6不再列为测试版。 我发现KefirBB解析器非常容易配置和扩展我自己的标签:

kefir-bb.sourceforge.net

(这是迄今为止我发现的最好的BBCode解析器)

我也在fyhao.com上找到了这个代码,但它确实可以防止错误的嵌套标签(因此不适合解析用户输入的输入):

public static String bbcode(String text) { String html = text; Map bbMap = new HashMap(); bbMap.put("(\r\n|\r|\n|\n\r)", "
"); bbMap.put("\\[b\\](.+?)\\[/b\\]", "https://stackoverflow.com/questions/849396/java-bbcode-library/$1"); bbMap.put("\\[i\\](.+?)\\[/i\\]", "https://stackoverflow.com/questions/849396/java-bbcode-library/$1"); bbMap.put("\\[u\\](.+?)\\[/u\\]", "https://stackoverflow.com/questions/849396/java-bbcode-library/$1"); bbMap.put("\\[h1\\](.+?)\\[/h1\\]", "

https://stackoverflow.com/questions/849396/java-bbcode-library/$1

"); bbMap.put("\\[h2\\](.+?)\\[/h2\\]", "

https://stackoverflow.com/questions/849396/java-bbcode-library/$1

"); bbMap.put("\\[h3\\](.+?)\\[/h3\\]", "

https://stackoverflow.com/questions/849396/java-bbcode-library/$1

"); bbMap.put("\\[h4\\](.+?)\\[/h4\\]", "

https://stackoverflow.com/questions/849396/java-bbcode-library/$1

"); bbMap.put("\\[h5\\](.+?)\\[/h5\\]", "
https://stackoverflow.com/questions/849396/java-bbcode-library/$1
"); bbMap.put("\\[h6\\](.+?)\\[/h6\\]", "
https://stackoverflow.com/questions/849396/java-bbcode-library/$1
"); bbMap.put("\\[quote\\](.+?)\\[/quote\\]", "
https://stackoverflow.com/questions/849396/java-bbcode-library/$1
"); bbMap.put("\\[p\\](.+?)\\[/p\\]", "

https://stackoverflow.com/questions/849396/java-bbcode-library/$1

"); bbMap.put("\\[p=(.+?),(.+?)\\](.+?)\\[/p\\]", "

https://stackoverflow.com/questions/849396/java-bbcode-library/$3

"); bbMap.put("\\[center\\](.+?)\\[/center\\]", "
https://stackoverflow.com/questions/849396/java-bbcode-library/$1"); bbMap.put("\\[align=(.+?)\\](.+?)\\[/align\\]", "
$2"); bbMap.put("\\[color=(.+?)\\](.+?)\\[/color\\]", "$2"); bbMap.put("\\[size=(.+?)\\](.+?)\\[/size\\]", "$2"); bbMap.put("\\[img\\](.+?)\\[/img\\]", ""); bbMap.put("\\[img=(.+?),(.+?)\\](.+?)\\[/img\\]", ""); bbMap.put("\\[email\\](.+?)\\[/email\\]", "https://stackoverflow.com/questions/849396/java-bbcode-library/$1"); bbMap.put("\\[email=(.+?)\\](.+?)\\[/email\\]", "$2"); bbMap.put("\\[url\\](.+?)\\[/url\\]", "https://stackoverflow.com/questions/849396/java-bbcode-library/$1"); bbMap.put("\\[url=(.+?)\\](.+?)\\[/url\\]", "$2"); bbMap.put("\\[youtube\\](.+?)\\[/youtube\\]", ""); bbMap.put("\\[video\\](.+?)\\[/video\\]", ""); for (Map.Entry entry: bbMap.entrySet()) { html = html.replaceAll(entry.getKey().toString(), entry.getValue().toString()); } return html; }

BTW javaBBcode是开源项目的一部分: JavaBB 。

我相信更好的选择是使用wiki标记。 您可以尝试我目前使用的Mylyn Wikitext包,这对我们的文档系统非常成功。

但是,如果您尝试解析自己已经拥有的某些论坛文本,这不是您问题的答案:-I

我相信更好的选择是使用wiki标记

除非你有非技术用户习惯bbcode,并且对学习另一种神秘的标记格式不是非常感兴趣。

我过去成功使用正则表达式在html和bbcode之间翻转。 定义覆盖每个标记的表达式列表,并为每个标记预编译模式。 然后使用每个表达式迭代转换字符串。 两种方式都有效。 性能实际上非常好,您可以轻松地适应自己的方言/扩展。

缺点是正则表达式并不总是直截了当。

另一个用于BBCode解析和转换为HTML的Java选项是Prime Transformer。

https://github.com/inversoft/prime-transformer

我们为某些特定用途构建了这个,但是试图保持它的通用性以供一般消费。 我有一个基本的例子,说明如何将它放在GitHub的登陆页面上。

Interesting Posts