首页 新闻 会员 周边

markdown文本如何生成摘要

0
悬赏园豆:200 [待解决问题]

请问在C#中如何在不转换为html的前提下,直接从markdown文本生成摘要(不带markdown标记)的纯文本。

测试样本:

1)比如这样的markdown

# 传感器### 1.什么是传感器- 传感器是一种感应\检测装置, 目前已经广泛应用于智能手机上### 2.传感器的作用- 用于感应\检测设备周边的信息- 不同类型的传感器, 检测的信息也不一样##### iPhone中

生成这样的摘要:

传感器 1.什么是传感器- 传感器是一种感应\检测装置, 目前已经广泛应用于智能手机上 2.传感器的作用- 用于感应\检测设备周边的信息- 不同类型的传感器, 检测的信息也不一样 iPhone中

2)比如这样的markdown

## 简介本文主要介绍几个常见的性能测试工具。本博客所有文章:[博客文章索引](http://www.cnblogs.com/xuanku/p/index.html)## 性能测试工具在这篇文章中

生成这样的摘要:

简介本文主要介绍几个常见的性能测试工具。本博客所有文章:“博客文章索引” 性能测试工具在这篇文章中

等等...

问题补充:

前提条件:在不生成html的情况下。如果先生成html,就不存在这个提问了。

在没有找到其他更好的方法之前,准备用正则表达试实现,之前写了点很简单的正则表达式:

public static class MarkdownUtility
{
    private static readonly Regex _regexLink = new Regex(@"\[(.*?)\]\(.*?\)");

    private static readonly Regex _regexMarkupChar = new Regex(@"[*#>`-]");

    private static readonly Regex _regexMultiSpace = new Regex(@" {2,}");

    public static string ConvertToPlainText(string markdown)
    {
        return _regexMultiSpace.Replace(
                _regexMarkupChar.Replace(
                    _regexLink.Replace(
                        markdown,
                        " \"$1\" "),
                    " "),
                " ");
    }
}
dudu的主页 dudu | 高人七级 | 园豆:31003
提问于:2015-09-02 16:54
< >
分享
所有回答(6)
0

现在有个想法,可不可以通过markdown生成博文内容,然后根据它再生成摘要。

田园里的蟋蟀 | 园豆:423 (菜鸟二级) | 2015-09-02 17:06

不生成所有html情况下,两种方案:

1. 先截取部分markdown内容,然后生成对应html内容,然后截取摘要。

2. 先截取部分markdown内容,然后替换所有markdown标记,然后截取摘要。

好像都不是很好。

 

支持(0) 反对(0) 田园里的蟋蟀 | 园豆:423 (菜鸟二级) | 2015-09-02 17:12
0

生成Html之后然后取InnerText。

 

按照我原来的想法,是markdown生成摘要后是以html格式来显示的,但是也有问题,遇到多行的比如代码块之类的,如果被截断,就不好使了。

nil | 园豆:879 (小虾三级) | 2015-09-02 17:06
0

针对性的替换,以行(hang)为分割。反正markdown的标记也不多。不过最简单的还是转换为html,然后取text。

幻天芒 | 园豆:37175 (高人七级) | 2015-09-02 17:12
0

将markdown渲染成html的代码重写一遍,不过渲染成纯文本,想想就耗时间,还是直接生成html在取text

上兵伐谋 | 园豆:547 (小虾三级) | 2015-09-02 17:28
0

有没有可能通过调用外部服务或者工具实现呢?

jackccc | 园豆:1341 (小虾三级) | 2015-09-02 17:43
1

markdown生成html估计也是用来正则式吧,反正都要用,还不如用自己写的正则式来直接解析

刘宏玺 | 园豆:14020 (专家六级) | 2015-09-02 19:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册