【问题标题】:Convert Markdown to plain text将 Markdown 转换为纯文本
【发布时间】:2020-08-27 05:05:38
【问题描述】:

我正在考虑将一些 Markdown 文本转换为纯文本。阅读现有问题后,很明显最简单的解决方案是使用现有转换器将 Markdown 转换为 Html,然后将 Html 转换为纯文本。但是我仍然有点困惑,因为我需要保留来自 html 的 a 标签 href。

例如 这个降价“一些文字[点击这里](https://somelink.com)” 转换为 html

<p>some text <a href="https://somelink.com">click here</a></p>

然后当我将该 html 转换为纯文本时 "一些文字点击这里"

如何将原始降价转换为“一些文本https://somelink.com”之类的内容

【问题讨论】:

  • 为什么不使用正则表达式或字符串方法(如替换)来摆脱其他一切
  • 一个简单的方法是分两步完成:1)使用正则表达式替换将“a”标签转换为它们的 href 属性值,然后 2)删除所有标签

标签: c# html asp.net-core markdown


【解决方案1】:

根据 Judah Gabriel Himango here 的回答,我对逐步遍历 html 元素的方法进行了更改。

我为 A 标签添加了 switch case 以获取属性值,并设置了一个标志来停止方法迭代 a 标签子作为它的 href,这对我来说很重要。

                case HtmlNodeType.Element:
                switch (node.Name)
                {
                    case "p":
                        // treat paragraphs as crlf
                        outText.Write("\r\n");
                        break;
                    case "br":
                        outText.Write("\r\n");
                        break;
                    case "a":
                        outText.Write($"{node.Attributes.FirstOrDefault(x => x.Name == "href")?.Value}");
                        isATag = true;
                        break;
                }

                if (node.HasChildNodes && !isATag)
                {
                    ConvertContentTo(node, outText);
                }
                break;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 2011-02-22
    • 2012-04-12
    • 2014-09-08
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多