角Markdown解析“ \ n”换行符

时间:2018-12-16 13:10:13

标签: javascript html angular markdown

我创建了一个博客,其中markdown从后端返回为字符串,但是当我返回带有正确换行符的字符串时,它的行为不符合预期。

我正在使用ngx-markdown来处理降价字符的解析,并使用ngPreserveWhitespaces属性来确保其应能正常工作。

示例:

// Example #1 Returned String
"## This is a subheader\n This is a sentence"

// Output
<h2>This is a subheader\n This is a sentence</h2>

将其显示为一行,而换行符实际上以文本形式呈现为文本。

但是,在我的任何Angular组件中,我都可以按字面意义将此相同的字符串写为组件上的属性并返回它,它可以像这样正确地呈现:

// Example #2 Hard Coded String
public correct: string = "## This is a subheader\n This is a sentence";

// Output

<h2>This is a subheader</h2>

<p>This is a sentence</p>

如上所述,我正在使用的markdown解析器是这样实现的:

<markdown ngPreserveWhitespaces>{{content}}</markdown>

我还尝试通过在main / tsconfig文件中设置ngPreserveWhitespaces来完成此操作。但是我不认为这是问题所在,因为我可以(在JS中是本机使用)console.log返回的字符串(#1)和硬编码的字符串(#2)甚至我的日志都显示不同(后者的格式正确,而前者只是将输出字符串化。

我尝试过:

  • JSON以多种方式(以及不采用)对数据进行字符串化/解析
  • 我尝试使用正则表达式手动替换字符
  • 我试图手动使用<br />
  • 我已经尝试过here概述的与此降价解析器处理空白相关的所有内容(我认为这不是问题)

似乎没有什么可以安抚换行神。

1 个答案:

答案 0 :(得分:1)

解决方案

好的,所以我找到了解决方案,现在我将markdown字符串存储为:

"## This is a subheader\n This is a sentence"

这里的区别是我将其存储在其中的接口(一个Mongo数据库)已经将语音标记放在字符串值周围,所以现在实际上看起来像这样:

""## This is a subheader\n This is a sentence""

对于MongoDB Compass,这比我尝试的要奇怪的多。

由此,我能够正确解析JSON值(以前,它试图使用不是有效JSON的字符串来做到这一点,因为它没有包含在双语音标记中)。

我现在在Property类的扩展中处理此问题,我为每个称为HtmlProperty的类都对其进行了实例化,可以正确地解析值。