这是我在 csharp 2010 express 中使用markdownsharp的项目的一个小片段:
MarkdownSharp.Markdown md = new MarkdownSharp.Markdown();
switch (htmlPageTemplate)
{
case "Text.html":
contentNode.InnerHtml = md.Transform(moduleArray[4, i]);
break;
}
我从 moduleArray[4, i] 中的以下值开始:
Key points are summarized here.
+ Point 1
+ Point 2
+ Point 3
+ Point 4
+ Point 5
我期待以下输出:
Key points are summarized here.
<ul>
<li><p>Point 1</p></li>
<li><p>Point 2</p></li>
<li><p>Point 3</p></li>
<li><p>Point 4</p></li>
<li><p>Point 5</p></li>
</ul>
相反,我得到:
<p>Key points are summarized here.
+ Point 1</p>
<ul>
<li><p>Point 2</p></li>
<li><p>Point 3</p></li>
<li><p>Point 4</p></li>
<li><p>Point 5</p></li>
</ul>
我什至会很高兴:
<p>Key points are summarized here.</p>
<ul>
<li><p>Point 1</p></li>
<li><p>Point 2</p></li>
<li><p>Point 3</p></li>
<li><p>Point 4</p></li>
<li><p>Point 5</p></li>
</ul>
或者
<p>Key points are summarized here.
<ul>
<li><p>Point 1</p></li>
<li><p>Point 2</p></li>
<li><p>Point 3</p></li>
<li><p>Point 4</p></li>
<li><p>Point 5</p></li>
</ul>
</p>
有谁知道我为什么得到我的输出?即使第一个项目符号被拉到段落中,我觉得它仍然应该作为一个列表结束——但我被那个不重要的细节分散了注意力——我真正关心的是为什么我的列表没有保持在一起。有些东西正在触发段落模式,我觉得它不知何故被卡在那里。如果我发现任何其他内容,我会继续在这里查找和更新。
编辑: 由于我的项目的限制,我将使用下面标记的答案。一些不相关的背景信息,以防对其他人有帮助:
该项目涉及从保存为文本的半结构化 Word 文档开始。然后将文本解析为大约五个值,其中一个是我在问题中引用的内容。
从这个解析的文本中,我有了构建我们所谓的“模块”的基础。该模块由菜单、词汇表、内容页面和其他一些小东西组成。内容页面是我在上述问题中所做的工作。
一旦我准备好构建我的页面,我就会解析文本内容并将其更改为 markdown。大多数情况下,这仅涉及以“*”而不是“+”开头的 Word 格式的纯文本列表。
一旦我有了降价,我通过上面链接的 markdownsharp 运行它。
带着下面的答案,我最终得到了我不想要的利润。为了做到这一点,我使用正则表达式将“*”的第一个实例替换为“\n +”,然后将其余的替换为“+”。
对于我必须在我真的不想要它的地方添加 \n 的情况,我可能只会在结果 para 中添加一个类。唯一的问题是在我确实想要保证金的情况下不添加课程,但这在我的情况下可以正常工作。