以下是使用markdownsharp的csharp 2010 express中我的项目的一小段摘录:
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>
有谁知道我为什么得到我的输出?即使第一颗子弹被拉进了段落,我觉得它仍然应该最终成为一个列表 - 但是我被这个不重要的细节分散了注意力 - 所有我真正关心的是为什么我的名单不是&#39;住在一起。有些东西正在触发段落模式,我觉得它会以某种方式卡在那里。如果我发现其他任何事情,我会继续查看和更新。
修改 由于项目的限制,我会回答下面标记的答案。一些不相关的背景信息,以防对其他人有用:
这个项目涉及从半结构化Word文档开始,该文档作为文本保存下来。然后解析文本大约五个值,其中一个是我在我的问题中引用的内容。
从这个解析过的文本中,我有了构建我们称之为“模块”的基础。该模块包括菜单,词汇表,内容页面和一些其他小东西。内容页面就是我在上面的问题中所做的工作。
一旦我准备好构建我的页面,我会解析文本内容并将其更改为markdown。大多数情况下,这只涉及Word格式的纯文本列表,以&#34; *&#34;开头。而不是&#34; +&#34;。
一旦我有降价,我会通过上面链接的markdownsharp运行它。
按照下面的答案,我最终得到了一个我不想要的保证金。为了做到这一点,我使用正则表达式来替换&#34; *&#34;的第一个实例。用&#34; \ n +&#34;然后其余的只是&#34; +&#34;。
我可能只会在结果para中添加一个类,以便我必须添加\ n我真的不想要它的情况。唯一的问题是在我确实需要保证金的情况下不会添加课程,但在我的情况下这样做会很好。
答案 0 :(得分:0)
我很确定你需要那个空白行才能使它工作,无论Markdown解析器如何。如果没有空行,则表示您不想将其与当前段落区分开来。
StackOverflow具有相同的行为:
sdsdasddasdasda
+ 1
+ 2
+ 3
给出
<p>sdsdasddasdasda
+ 1</p>
<ul>
<li><p>2</p></li>
<li><p>3</p></li>
</ul>
但是
sdsdasddasdasda
+ 1
+ 2
+ 3
给出
<p>sdsdasddasdasda</p>
<ul>
<li><p>1</p></li>
<li><p>2</p></li>
<li><p>3</p></li>
</ul>
第二个输出不是你想要的吗?