首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MarkdownSharp正在转换包含下划线字符的Url

MarkdownSharp正在转换包含下划线字符的Url
EN

Stack Overflow用户
提问于 2011-11-28 10:59:31
回答 2查看 889关注 0票数 3

我在我的一个项目中使用MarkdownSharp,并注意到如果我的Url中有一对下划线字符在其中某个位置,它会被处理为斜体,因此将_替换为<em>

我在谷歌上看过,但没有发现任何关于这个问题行为的参考,通过阅读MarkdownSharp代码中的一些注释,它表明代码的编写方式是为了防止这种情况发生。请参阅下面标记代码中的代码片段:

在这里调用其他子类的顺序是非常重要的。链接和图像替换需要在EscapeSpecialChars()之前进行,以便对a和img标记中的任何*'s或_s进行编码。

代码语言:javascript
复制
    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";
    }

对于这种行为,有什么已知的解决办法吗?

** UPDATE:我刚刚测试了在StackOverflow上输入一个url,我认为它使用了MarkdownSharp的一个版本(并且根据我的项目启用了AutoHyperlink ),当它在url中处理一个单独的下划线实例时,只要在url中出现一对下划线,它就会中断。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-28 11:16:25

您是否尝试过使用反斜杠来转义要保留的_字符?

请参阅:http://daringfireball.net/projects/markdown/syntax#backslash

从该条中:

例如,如果您想用文字星号环绕一个单词(而不是

标记),您可以在星号之前使用反斜杠,如下所示:

代码语言:javascript
复制
\*literal asterisks\*

标记中的星号与下划线大致相同。

编辑:由于我的评论,答案被接受了。OP决定禁用自动超链接,并使用HTML标记或Markdown链接语法手动插入链接。

听起来好像这个特性考虑得不够好。它附带了一个警告,说它将使系统做一些不符合标准标记的事情,在我看来,这似乎是一个警告,他们没有解决所有这些功能的问题。您可能需要更改库来修复这样的bug.

票数 1
EN

Stack Overflow用户

发布于 2011-11-30 11:36:29

MarkdownSharp有一个配置选项是为此创建的:

代码语言:javascript
复制
/// <summary>
/// when true, bold and italic require non-word characters on either side  
/// WARNING: this is a significant deviation from the markdown spec
/// </summary>
public bool StrictBoldItalic { get; set; }

有关一些背景信息,请参见https://blog.stackoverflow.com/2008/06/three-markdown-gotcha/中的第1点。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8294821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档