我在我的一个项目中使用 MarkdownSharp 并注意到如果我的任何 Url 在其中的某处包含一对下划线字符,它会被视为斜体,因此将 _ 替换为<em>
.
我查看了谷歌,但找不到任何关于此问题行为的参考,并且通过阅读 MarkdownSharp 代码中的一些评论,它表明代码的编写方式是为了防止这种情况发生。请参阅下面的降价代码片段:
此处调用其他潜艇的顺序是必不可少的。链接和图像替换需要在 EscapeSpecialChars() 之前进行,以便对 a 和 img 标签中的任何 * 或 _ 进行编码。
public string Transform(string text)
{
if (String.IsNullOrEmpty(text)) return "";
Setup();
text = Normalize(text);
text = HashHTMLBlocks(text);
text = StripLinkDefinitions(text);
text = RunBlockGamut(text);
text = Unescape(text);
Cleanup();
return text + "\n";
}
这种行为是否有已知的解决方法?
** 更新:我刚刚测试了在 StackOverflow 上输入一个 url,我相信它使用 MarkdownSharp 的一个版本(并且根据我的项目启用了 AutoHyperlink)并且它处理 url 中的单个下划线实例,只要一对下划线出现在网址中,它会中断。