1

私のDBには、マークダウンされたテキストがあります。質問の抜粋を表示するときに SO が行うのと同じ方法で、テキストの最初の N 文字を取得したいと思います。つまり、すべての書式設定を削除する必要があります。もちろん、MD -> HTML のステップは避けなければならず、MD 化されたテキストに対して作業を行う必要があります。パフォーマンスは要件です。どうも。

4

4 に答える 4

4

私のDBには、マークダウンされたテキストがあります。質問の抜粋を表示するときに SO が行うのと同じ方法で、テキストの最初の N 文字を取得したいと思います。つまり、すべての書式設定を削除する必要があります。

テキストの両方の表現をデータベースに保存します。

  1. 編集に適した生のマークダウン
  2. 出力に適した HTML 化バージョン

表示するときは、HTML 化された出力バージョンを使用し、標準の HTML ストリッピング アルゴリズムを適用するだけです。

于 2009-02-02T10:06:53.257 に答える
2

ここで何をする必要があるかを誤解している (または単に理解していない) 場合はご容赦ください。このデータベースでは、パフォーマンスの観点から、すべてのマークアップが削除されたバージョンのテキストをデータベースの別のフィールドに保存することで、最大の利益を得ることができる可能性があります。そうすれば、フロントエンドはブラウザに表示する前にデータベースから読み取ったものを繰り返し解析する必要がなくなります...新しいレコードが追加されたときに一度だけ解析されます。

これがパフォーマンスの観点から実際に意味があるかどうかは、状況に固有のさまざまな変数に依存します.テキストエントリの大きさ、レコードの挿入と読み取りの頻度など.

于 2009-01-27T22:29:51.440 に答える
1

これを処理する方法は、マークダウンされたテキストを含む/表すクラスのフォーマッタ インターフェイスを定義することです。次に、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();
    }
}
于 2009-01-27T20:45:22.510 に答える
0

私が取っている道は次のとおりです。スイッチを使用して、htmlまたは単純なテキストを生成できるようにマークダウンコードを変更します。抜粋が生成されたら、必ずDBに保存します。

それを行う方法はたくさんあるので、私は答えを解決策としてタグ付けしません。誰もが私の投票を得る;)

于 2009-02-03T16:52:22.907 に答える