请问在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\" "), " "), " "); } }
现在有个想法,可不可以通过markdown生成博文内容,然后根据它再生成摘要。
不生成所有html情况下,两种方案:
1. 先截取部分markdown内容,然后生成对应html内容,然后截取摘要。
2. 先截取部分markdown内容,然后替换所有markdown标记,然后截取摘要。
好像都不是很好。
生成Html之后然后取InnerText。
按照我原来的想法,是markdown生成摘要后是以html格式来显示的,但是也有问题,遇到多行的比如代码块之类的,如果被截断,就不好使了。
针对性的替换,以行(hang)为分割。反正markdown的标记也不多。不过最简单的还是转换为html,然后取text。
将markdown渲染成html的代码重写一遍,不过渲染成纯文本,想想就耗时间,还是直接生成html在取text
有没有可能通过调用外部服务或者工具实现呢?
markdown生成html估计也是用来正则式吧,反正都要用,还不如用自己写的正则式来直接解析