样本编辑器 - 与stackOverflow相同

时间:2011-03-21 13:24:33

标签: java editor live-preview

我想创建一个编辑器并将格式化的文本存储在数据库中。我只想让一个示例编辑器执行StackOverFlow编辑器等功能:

_sfdfdgdfgfg_:用于带下划线的文字

/sfdfdgdfgfg/:用粗体文字

我将使用一个函数将_替换为<b>,将第二个</b>替换为/的respec。

所以我的问题是,如果它们是嵌套的,我该如何检测结束和最后_/

例如:

 /dsdfdfffddf _ dsdsdssd_/ ffdfddsgds /dfdfehgiuyhbf/  ....

我将在Java Application中使用这个编辑器。

4 个答案:

答案 0 :(得分:5)

所以你想要的是markdown的Java版本。

以下是Google发现的内容:

http://code.google.com/p/markdownj/

答案 1 :(得分:2)

它不会让你开心,但你应该花时间学习编写解析器(龙书很好)。解析器任务的事情是,如果你知道怎么做就很容易,如果你不知道怎么做就很容易。 我会写一个标记器,它可以识别像<start_underline, "_"><end_underline, "_">这样的标记,用于编辑器中要使用的格式指示器,以及其他所有格式指示器。结果可能如下所示:

文字:Hello _world_, /how are you?/

代币:<text, "Hello ">,<start_underline, "_">,<text, "world">,<end_underline, "_">,<text, ", ">,<start_bold, "/">,<text, "how are you?">,<end_bold, "/">,

使用布尔变量可以很容易地跟踪开始和结束,因为嵌套它们是没有意义的。这就是为什么我会在tokenizer中进行跟踪。

之后我会写一个解析器类来获取这些标记并相应地将输出配置到textarea。

你知道,这实际上只是原则divide and conquer的应用。 How do I do everything I want with my text?的任务分为三部分:

  1. 根据一个有用的结构,这个字符串是关于什么的? (来自Tokenizer的答案)
  2. 如何为所有可能的x处理特定的textpart x? (来自Parser的答案)
  3. 如何表示此字符串的解析器解释? (来自JTextpane或类似的答案)
  4. Tokenizer和Parser都不需要额外的类。因为上下文并不复杂,所以它们可以是您喜欢的Textarea类型的扩展类中的方法。

    我认为,提供更详细的建议并没有帮助,下一个最好的步骤是您可能最好自己想做的实施。不过,不要犹豫,问你是否找不到一个特定部分的好解决方案。

答案 2 :(得分:1)

你可以看到stackoverflow.com页面源并尝试集成......我想它应该有用......

http://blog.stackoverflow.com/2008/12/reverse-engineering-the-wmd-editor/

答案 3 :(得分:0)

这是一个展示如何使用MarkDownJ的示例:

首先,确保MarkdownJ是在Java应用程序中调用的类库。

其次,使用此代码调用MarkdownJ:

MarkdownProcessor m = new MarkdownProcessor(); 

String html = m.markdown("this is *a sample text*");

System.out.print("<html>"+html+"</html>");