如何从Java的Markdown文件中仅提取文本

时间:2019-03-06 21:48:09

标签: javascript vue.js markdown

我正在使用Vue创建一个简单的博客平台,该平台为帖子提供Markdown(* .md)文件。在主页上,我想显示已发布帖子的列表以及每个帖子中前30个单词的预览。到目前为止,这是我要显示的功能(front-matter仅解析出文件顶部的一些元数据,而postData仅包含Markdown文件中的文本):

import fm from "front-matter";

function postPreview() {
  var fmData = fm(postData).body;
  var words = fmData.split(" ");
  return words.slice(0, 30).join(" ");
}

问题是,如果Markdown具有图像标签或链接标签,那么当我只想显示原始文本时,它会显示图像标签或链接标签。例如,如果这是我的Markdown文件:

![alt-text...](link-to-some-picture) Here is a [link](link-to-some-website) in my file.

然后预览应如下所示:

Here is a link in my file.

有没有可以让我做到这一点的图书馆?

1 个答案:

答案 0 :(得分:1)

也许有更直接的方法,但是这里有些东西似乎起作用。

https://github.com/showdownjs/showdown

这是对HTML脚本的有效标记,然后使用jQuery从隐藏的元素中提取text()。

function Markdown2HTML(sInput){
   var  converter = new showdown.Converter();
   var  html = converter.makeHtml(sInput);
  return html ;
}

function fnProcess() {
  
  var sMarkDown = $("#myInput").val();
  
  var sHTML = Markdown2HTML(sMarkDown);
  
  $("#resultTemp").html(sHTML);

  $("#resultArea").html($("#resultTemp").text());

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.0/showdown.min.js"></script>

<button onclick="fnProcess()">process</button>

<input id="myInput" style="width:500px;" type="text" value="![alt-text...](link-to-some-picture) Here is a [link](link-to-some-website) in my file." />
<div id="resultArea" style="padding:10px;"></div>
<div id="resultTemp" style="display:none"></div>