Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从标记中获取原始文本';编辑文本_C#_.net_Formatting_Markdown - Fatal编程技术网

C# 从标记中获取原始文本';编辑文本

C# 从标记中获取原始文本';编辑文本,c#,.net,formatting,markdown,C#,.net,Formatting,Markdown,在我的数据库中,我有一个被标记的文本。与显示问题摘录的方式相同,我希望得到文本的前N个字符,即所有格式必须删除。当然,必须避免MD->HTML步骤,并且必须在MD'ed文本上完成工作。性能是一项要求。Thx.我处理这个问题的方法是为包含/表示标记文本的类定义格式化程序接口。然后,您将拥有支持HTML格式和纯文本格式的具体实现。您需要做的就是注入正确的实现并调用格式化程序 您的纯文本格式化程序可以简单地遍历字符串中的字符,复制字符,直到它达到某个标记。然后它将跳过标记,并在点击文本时再次开始输出

在我的数据库中,我有一个被标记的文本。与显示问题摘录的方式相同,我希望得到文本的前N个字符,即所有格式必须删除。当然,必须避免MD->HTML步骤,并且必须在MD'ed文本上完成工作。性能是一项要求。Thx.

我处理这个问题的方法是为包含/表示标记文本的类定义格式化程序接口。然后,您将拥有支持HTML格式和纯文本格式的具体实现。您需要做的就是注入正确的实现并调用格式化程序

您的纯文本格式化程序可以简单地遍历字符串中的字符,复制字符,直到它达到某个标记。然后它将跳过标记,并在点击文本时再次开始输出

public interface IFormatter
{
    string Format();
}

public class HtmlFormatter: IFormatter
{
    public Format()
    {
        return ...string translated to HTML...
    }
}

public class PlainTextFormatter : IFormatter
{
    public Format()
    {
        ...go through and remove all markdown and return rest
    }
}


public class Post : IFormattable
{
    public IFormatter Formatter { get; set; }

    public Post( IFormatter formatter )
    {
        this.Formatter = formatter ?? new HtmlFormatter();
    }

    public Format()
    {
        return this.Formatter.Format();
    }
}

我处理这个问题的方法是为包含/表示标记文本的类定义格式化程序接口。然后,您将拥有支持HTML格式和纯文本格式的具体实现。您需要做的就是注入正确的实现并调用格式化程序

您的纯文本格式化程序可以简单地遍历字符串中的字符,复制字符,直到它达到某个标记。然后它将跳过标记,并在点击文本时再次开始输出

public interface IFormatter
{
    string Format();
}

public class HtmlFormatter: IFormatter
{
    public Format()
    {
        return ...string translated to HTML...
    }
}

public class PlainTextFormatter : IFormatter
{
    public Format()
    {
        ...go through and remove all markdown and return rest
    }
}


public class Post : IFormattable
{
    public IFormatter Formatter { get; set; }

    public Post( IFormatter formatter )
    {
        this.Formatter = formatter ?? new HtmlFormatter();
    }

    public Format()
    {
        return this.Formatter.Format();
    }
}

如果我误解(或只是不理解)您需要在这里做什么,请原谅,但我突然想到,如果此数据库中的读取(页面视图)多于插入(添加新的标记记录),从性能的角度来看,通过保存一个版本的文本,并在数据库中的一个单独字段中删除所有标记,可以获得最大的收益。这样,在显示到浏览器之前,前端不必重复解析从数据库读取的内容。。。当添加新记录时,它将只被解析一次


从性能的角度来看,这是否真的有意义取决于特定于您的情况的各种变量。。。文本条目有多大,插入记录与读取记录的频率等。

如果我误解(或根本不理解)您需要在这里做什么,请原谅,但我会想到,如果此数据库的读取(页面视图)多于插入(添加新的标记记录),从性能的角度来看,通过保存一个版本的文本,并在数据库中的一个单独字段中删除所有标记,可以获得最大的收益。这样,在显示到浏览器之前,前端不必重复解析从数据库读取的内容。。。当添加新记录时,它将只被解析一次

从性能的角度来看,这是否真的有意义取决于特定于您的情况的各种变量。。。文本条目有多大,插入记录与读取记录的频率等

在我的数据库中,我有一个被标记的文本。与显示问题摘录的方式相同,我希望得到文本的前N个字符,即所有格式必须删除

我们将文本的两种表示形式存储在数据库中:

  • 适合编辑的原始标记
  • 适合输出的HTML版本
  • 当我们显示它时,我们使用HTML化的输出版本,并简单地应用我们的标准HTML剥离算法

    在我的数据库中,我有一个被标记的文本。与显示问题摘录的方式相同,我希望得到文本的前N个字符,即所有格式必须删除

    我们将文本的两种表示形式存储在数据库中:

  • 适合编辑的原始标记
  • 适合输出的HTML版本

  • 当我们显示它时,我们使用HTML化的输出版本,并简单地应用我们的标准HTML剥离算法。

    以下是我所采用的路径:我将修改标记代码,以便通过一个开关,我可以生成HTML或简单文本。一旦生成了摘录,我肯定会将其存储在数据库中


    我不会将任何答案标记为解决方案,因为有很多方法可以做到这一点。每个人都有我的选票;)

    下面是我要采取的路径:我将修改标记代码,这样,通过切换,我可以生成html或简单文本。一旦生成了摘录,我肯定会将其存储在数据库中


    我不会将任何答案标记为解决方案,因为有很多方法可以做到这一点。每个人都有我的选票;)

    这不是我问题的答案,但对周围的框架来说是一个很好的观点。投票。不是对我问题的回答,而是对周围框架的一个很好的观点。投了票。我会记住这一点。谢谢然而,它并没有回答关于生成此摘录的最佳方式的问题。我将记住这一点。谢谢然而,它并没有回答关于生成此摘录的最佳方式的问题。