Javascript 在JS中标记,不包含<;p>;?
如何使用任何JS库(如markdown JS或marked)将一段标记文本转换为HTML,而不将其包含在段落标记中 例如,我喜欢将Javascript 在JS中标记,不包含<;p>;?,javascript,markdown,Javascript,Markdown,如何使用任何JS库(如markdown JS或marked)将一段标记文本转换为HTML,而不将其包含在段落标记中 例如,我喜欢将此*斜体*文本转换为此斜体文本,而不将其包含在中 编辑: -我的问题不是如何在转换后从输出中删除p标记,我的问题是如何要求库不要将输出包含在p标记中。 -默认情况下,标记js并在内标记封闭输出。有一种方法可以实现这一点。该库允许您定义自己的渲染器,该方法允许您定义段落的输出 您可以使用以下方法传入自己的渲染器: marked.setOptions({ render
此*斜体*文本
转换为此斜体文本
,而不将其包含在
中
编辑:-我的问题不是如何在转换后从输出中删除p标记,我的问题是如何要求库不要将输出包含在p标记中。
-默认情况下,标记js并在
内标记封闭输出。有一种方法可以实现这一点。该库允许您定义自己的渲染器,该方法允许您定义段落的输出
您可以使用以下方法传入自己的渲染器:
marked.setOptions({
renderer: new MyRenderer(),
});
var output = marked('This **text** will be rendered with MyRenderer');
这将要求您为块引号
、html
、段落
以及默认的标记的所有其他方法定义方法
以下是一个例子:
function MyRenderer(options) {
this.options = options || {};
}
MyRenderer.prototype.paragraph = function(text) {
return 'This comes from my own renderer: ' + text + '\n';
};
但是,这需要一些努力,因此清除段落(
标记)的最快方法是更改标记的.js文件中现有呈现程序的代码:
替换:
Renderer.prototype.paragraph = function(text) {
return '<p>' + text + '</p>\n';
};
我通过对结果使用正则表达式解决了这个问题:
rawMarkup.replace(/^(?:<p>)?(.*?)(?:<\/p>)?$/, "$1")
rawMarkup.replace(/^(?:)?(.*?(:)?$/,“$1”)
然而,这只在简单的情况下有效,并且在有两个相邻段落的情况下会失败,可能还有其他段落
经过一些测试后,我意识到文本周围有段落标记是有充分理由的,我的实现将不得不进行调整。关于这个问题,我已经晚了很久,但昨晚我遇到了完全相同的问题,我打开了标记的,以构建解决这个问题的方法
我需要能够(对于我的i18n翻译CMS)将标记嵌入任何类型的标记(如标题)中,并让它们从Markdown开始呈现,而不使用封闭的
标记。因此,这个修正使得如果我的源代码中只有一行文本(对我来说是JSON),那么它将不会包装在
标记中。但如果有更多,它会像往常一样将它们全部包装在标签中
这是我对零钱的请求
我非常怀疑它是否会被包括在内,但我正在我的项目中使用它,它工作得非常好。以下是对我有用的东西(多年后)。它假定您知道哪些元素不希望包装在段落标记中
const marked=require(“marked”);
//降价中的每一行都被视为一个新段落,这防止了
//img标签被包装在标签中,这有助于调整img的大小,
//对中字幕等。
marked.Renderer.prototype.paragration=(文本)=>{
如果(text.startsWith("这有什么问题吗?你不能在转换后对其进行分析以获得你想要的输出。这似乎是一个奇怪的请求,我怀疑你会发现它是现成的。@LouBichard你的评论实际上是一个转换为HTML的标记文本,没有包含在/code>中,因此这不是一个奇怪的请求!谢谢,如果efault“Renderer”已公开,可以轻松地对其进行扩展或更改。您可以使用new marked.Renderer()创建默认呈现程序的实例
然后重写它的段落
函数,然后将此实例传递到标记的.setOptions
。该解决方案有一个问题:所有段落都没有p标签。这对我们使用角度标记的1.0.1
有效,但不使用角度标记的1.2.2
。我没有调查过再进一步,但这可能会帮助其他人。
rawMarkup.replace(/^(?:<p>)?(.*?)(?:<\/p>)?$/, "$1")