在 .NET 中将 Markdown 转换为 HTML

发布于 2024-07-11 10:58:13 字数 505 浏览 7 评论 0 原文

如何在 .NET 中将 markdown 转换为 html?

var markdown = "Some **bold** text";
var output = ConvertMarkdownToHtml(markdown)
// Output: <p>Some <strong>bold</strong> text</p>

我将 Markdown 文本存储在数据库中,在显示时需要将其转换为 html。

我了解 StackOverflow 的 WMD 编辑器(现在PageDown),但这仅转换客户端。

How can I convert markdown into html in .NET?

var markdown = "Some **bold** text";
var output = ConvertMarkdownToHtml(markdown)
// Output: <p>Some <strong>bold</strong> text</p>

I have Markdown text stored in a database that needs to be converted to html when it is displayed.

I know about StackOverflow's WMD Editor (now PageDown), but that only converts client-side.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

︶葆Ⅱㄣ 2024-07-18 10:58:13

TL;DR:现在是 2021 年,使用 markdig

我刚刚遇到了这些问题,答案都很旧了。 看来基于 commonmark 的实现是现在建议的方法。 可以在此处找到多种语言(包括 C#)的实现

TL;DR: now it's 2021 use markdig

I just came across this questions and the answers are all quite old. It appears that implementations based on commonmark are the suggested way to go now. Implementations for lots of languages (including C#) can be found here

风尘浪孓 2024-07-18 10:58:13

另一个似乎正在取得进展的实现是 MarkdownDeep

这是 C# 和 JavaScript 的完整实现。 Nuget 上的 MarkdownHelper 现在使用 MarkdownDeep 而不是 MarkdownSharp 。

我都使用过,MarkdownDeep 似乎功能更全面,并且 JavaScript 版本非常适合快速客户端设置。

Another implementation that seems to be gaining ground is MarkdownDeep

This is a full implementation for both C# and JavaScript. The MarkdownHelper on Nuget is using MarkdownDeep now instead of MarkdownSharp.

I've used both and MarkdownDeep seems to be more fully functional and having the JavaScript version is great for quick client side setups.

欲拥i 2024-07-18 10:58:13

该网站使用的是 Markdown Sharp,可在 NuGet

Markdown Sharp is what the site uses and is available on NuGet.

云胡 2024-07-18 10:58:13

请查看 Markdown Sharp。 它是 Stack Overflow 开发的开源库,比 markdown.net 更强大/更活跃。

Check out Markdown Sharp. It's the open source library that resulted from the development of Stack Overflow and is much more robust/actively developed than markdown.net.

忆依然 2024-07-18 10:58:13

Markdown Sharp

Markdown Sharp 在代码方面也没有那么糟糕,正如 John Leidegren 指出的那样,只是注释掉正则表达式或管理复杂的项目并不那么容易,在最干净的 OOP 中获胜。 它绝对非常快并且得到良好的支持。 我还没有找到基于标记解析器的方法。
这是一个例子:

        pattern = string.Format(@"
            (?:
                (?<=\n\n)           # Starting after a blank line
                |                   # or
                \A\n?               # the beginning of the doc
            )
            (                       # save in $1
                [ ]{{0, {0}}}
                <(hr)               # start tag = $2
                \b                  # word break
                ([^<>])*?           #
                /?>                 # the matching end tag
                [ \t]*
                (?=\n{{2,}}|\Z)     # followed by a blank line or end of document
            )", tabWidth - 1);
        text = Regex.Replace(text, pattern, new MatchEvaluator(HtmlEvaluator), RegexOptions.IgnorePatternWhitespace);

Markdown Sharp

Markdown Sharp isn't that bad code-wise either as John Leidegren noted, it's just not that easy to comment-out regular expressions or manage complex projects, w in in cleanest-OOP. It is definitely very fast and well-supported. I haven't found a Markup-parser based approach yet.
Here is an example:

        pattern = string.Format(@"
            (?:
                (?<=\n\n)           # Starting after a blank line
                |                   # or
                \A\n?               # the beginning of the doc
            )
            (                       # save in $1
                [ ]{{0, {0}}}
                <(hr)               # start tag = $2
                \b                  # word break
                ([^<>])*?           #
                /?>                 # the matching end tag
                [ \t]*
                (?=\n{{2,}}|\Z)     # followed by a blank line or end of document
            )", tabWidth - 1);
        text = Regex.Replace(text, pattern, new MatchEvaluator(HtmlEvaluator), RegexOptions.IgnorePatternWhitespace);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文