如何在 .NET 中将 markdown 转换为 html?
var markdown = "Some **bold** text";
var output = ConvertMarkdownToHtml(markdown)
// Output: <p>Some <strong>bold</strong> text</p>
我将 Markdown 文本存储在数据库中,在显示时需要将其转换为 html。
TL;DR:现在是 2021 年使用markdig
我刚遇到这个问题,答案都很老了。现在看来,基于commonmark的实现是建议的方式。可以在这里找到许多语言(包括 C#)的实现
另一个似乎正在取得进展的实现是MarkdownDeep
这是 C# 和 JavaScript 的完整实现。Nuget 上的MarkdownHelper现在使用 MarkdownDeep 而不是 MarkdownSharp。
我都使用过,MarkdownDeep 似乎功能更齐全,并且拥有 JavaScript 版本非常适合快速客户端设置。
Markdown Sharp是该站点使用的,可在NuGet上使用。
查看Markdown Sharp。它是 Stack Overflow 开发的开源库,比 markdown.net 更健壮/积极开发。
降价锐利
正如 John Leidegren 所指出的,Markdown Sharp 在代码方面也没有那么糟糕,注释掉正则表达式或管理复杂项目并不容易,在最干净的 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);