1

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

_sfdfdgdfgfg_ : 用于带下划线的文本

/sfdfdgdfgfg/ : 粗体字

我将使用一个函数将第一个替换_<b>第二个</b>(respec. for /)。

所以我的问题是如何检测结尾和最后一个_以及/它们是否嵌套?

例如 :

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

我将在 Java 应用程序中使用这个编辑器。

4

4 回答 4

5

所以你想要的是一个 Java 版本的markdown

以下是谷歌的发现:

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

于 2011-03-21T13:26:23.050 回答
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, "/">,

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

之后,我将编写一个解析器类,它接受这些标记并将输出配置到相应的文本区域。

你看,这其实只是原理的一种应用divide and conquer。的任务How do I do everything I want with my text?分为3部分:

  1. 根据一个有用的结构,这个字符串是关于什么的?(来自Tokenizer的回答)
  2. 如何处理x所有可能的特定文本部分x?(解析器的回答)
  3. 我如何表示这个字符串的解析器解释?(来自 JTextpane 或类似的答案)

Tokenizer 和 Parser 都不需要是额外的类。因为上下文并不复杂,它们可以只是您喜欢的 Textarea 类型的扩展类中的方法。

我认为,提供更详细的建议并没有帮助,下一个最佳步骤将是您可能更希望自己完成的实现。不过,请不要犹豫,询问您是否未能找到针对某个特定部分的良好解决方案。

于 2011-03-21T13:46:07.380 回答
1

您可以查看 stackoverflow.com 页面源并尝试集成...我想它应该可以工作...

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

于 2011-03-21T13:38:46.210 回答
0

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

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

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

MarkdownProcessor m = new MarkdownProcessor(); 

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

System.out.print("<html>"+html+"</html>");
于 2011-03-24T21:14:25.880 回答