1

ビットの置換が必要なドキュメントが一定の場合 (一種のメールマージシナリオ) に置換を行う最も迅速な方法についての指針を期待しています。

もちろん、string.replace と regexp を使用して置換を行う方法はたくさんありますが、一致を探すたびに入力ドキュメントを解析する必要があるようです。それは私が最適化しようとしているビットです。

4

3 に答える 3

2

おそらく最善の策は、ドキュメントを配列に分割し、各要素を前の置換と次の置換の間にあるテキストにすることだと思います。次に、置換する代わりに、文字列連結を使用して、分割配列の内容を各置換トークンで単純にインターリーブします。

擬似コード:

doc_array = split(input_doc, "token marker")

for each replace_array in set_of_replace_arrays:
    this_doc = ""

    while elements remain in doc array:
        this_doc.concat(next doc element)

        if any elements remain in replace array:
            this_doc.concat(next replace element)

    output this_doc
于 2009-10-26T12:02:34.743 に答える
0

解析したくなく、入力ドキュメントが一定であるため、 aを使用しMemoryStreamて元のドキュメントを処理し、絶対位置を使用してビットを変更できます。

別の方法は、そのString.Formatマーカーをプレースホルダーとして使用することです。

string input = "Dear {0} {1}";
//...
return String.Format(input, "Mr.", "Farias");
于 2009-10-26T12:06:44.517 に答える
0

柔軟性を高めるために、XslCompiledTransformを使用してテキストを出力させることができます。高速な XML およびテキスト生成用に最適化されており、必要に応じてロジックを含めることもできます。

于 2009-10-26T12:09:04.183 に答える