示例编辑器 - 与 stackOverflow 相同
我想创建一个编辑器并将格式化文本存储在数据库中。我想要一个示例编辑器执行类似 StackOverFlow 编辑器的功能:
_sfdfdgdfgfg_
:对于下划线文本
/sfdfdgdfgfg/
:对于粗体文本,
我将使用一个函数来替换第一个 _
由 和第二个
(分别为
/
)。
所以我的问题是如何检测结尾和最后一个 _
和 /
如果它们是嵌套的?
例如:
/dsdfdfffddf _ dsdsdssd_/ ffdfddsgds /dfdfehgiuyhbf/ ....
我将在 Java 应用程序中使用这个编辑器。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
因此,您需要的是 markdown 的 Java 版本。
以下是 Google 发现的内容:
http://code.google.com/p/markdownj/
So what you want is a Java Version of markdown.
Here's what Google finds:
http://code.google.com/p/markdownj/
它不会让你高兴,但你可能应该花时间学习编写解析器(龙书对此很好)。解析器任务的问题在于,如果您知道如何做,它们就很容易;如果您不知道,则几乎不可能。
我会编写一个标记生成器,可以识别
和
等标记作为您想要的格式指示符在您的编辑器中使用,并用于其他一切。结果可能如下所示:文本:
Hello _world_, /how are you?/
标记:,,< ;文本,“世界”>,,<文本,“,”>,,,,
使用布尔变量可以相当容易地跟踪开始和结束,因为它没有意义给它们筑巢。这就是为什么我已经在标记器中进行跟踪的原因。
之后,我将编写一个解析器类,它接受这些标记并相应地将输出配置到文本区域。
你看,这实际上只是
分而治之
原则的一个应用。How do I do everything I Want with my text?
的任务分为 3 个部分:x
的特定文本部分x
? (解析器的回答)Tokenizer 和 Parser 都不需要是额外的类。因为上下文并不复杂,所以它们可以只是您喜欢的 Textarea 类型的扩展类中的方法。
我认为提供更详细的建议是没有帮助的,下一个最佳步骤是您可能最好自己完成的实施。不过,如果您未能找到针对某个特定部分的良好解决方案,请毫不犹豫地询问。
It will not make you happy, but you should probably take the time to learn to write parsers (dragon book is nice for that). The thing with parser tasks is that they are easy if you know how to do it and nearly impossible if you don't.
I would write a tokenizer that can recognize tokens like
<start_underline, "_">
and<end_underline, "_">
for the format indicators you want to use in your editor and one for everything else. Results could look like this:Text:
Hello _world_, /how are you?/
Tokens:
<text, "Hello ">,<start_underline, "_">,<text, "world">,<end_underline, "_">,<text, ", ">,<start_bold, "/">,<text, "how are you?">,<end_bold, "/">,
Start and End can be tracked fairly easy with boolean variables, because it makes no sense to nest them. That's why I would do that tracking in the tokenizer already.
After that I would write a parser class that takes these tokens and configures the output to a textarea accordingly.
You see, that this is actually just an application of the principle
divide and conquer
. The task ofHow do I do everything I want with my text?
is split up into 3 parts:x
for all possiblex
? (Answer from Parser)Both Tokenizer and Parser don't need to be extra classes. Because the context is not complicated they can just be methods in an extension class of the Textarea type you prefer.
Giving more detailed advice is not helpful I think, the next best step would be an implementation that you probably better want to do by yourself. Don't hesitate to ask if you fail to find a good solution to one specific part, though.
您可以查看 stackoverflow.com 页面源代码并尝试集成...我想它应该可以工作...
https://blog.stackoverflow.com/2008/12/reverse-engineering-the-wmd-editor/
You can see stackoverflow.com Page Source and try to integrate... I guess it should work...
https://blog.stackoverflow.com/2008/12/reverse-engineering-the-wmd-editor/
这是一个展示如何使用 MarkDownJ 的示例:
首先,确保 MarkdownJ 作为 Java 应用程序中调用的类库。
其次,使用此代码调用 MarkdownJ :
This is an example show how to use MarkDownJ:
First, make sure that MarkdownJ is as a class library invoked in your Java application.
Second, use this code to invoke MarkdownJ :