0

私のアプリでは、ユーザーが一般的なパラメーター化された文字列を入力して保存できるようにする必要があります。

.NET でこれを行う最善の方法は何ですか?

現在、ユーザーが事前定義された「パラメーター」を含む文字列をテキストボックスに入力できるようにしています。

例えば。"%%Name%% さん、注文番号 %%Order%% を受け取ってください。"

この一般的な文字列は保存され、必要に応じて実際のデータが取り込まれます。ポピュレーションは、一連の次のタイプのステートメントによって単純に行われます。

Str1.Replace("%%Name%%", data.Name)
Str1.Replace("%%Order%%", data.Order)
4

4 に答える 4

3

フォーマット文字列をお探しですか?

string str = String.Format("five = {0} hello {1}", 5, "World");

または代わりに

string base = "five = {0} hello {1}"
string str = String.Format(base, 5, "World");
于 2012-11-07T22:07:26.660 に答える
0

ユースケースの複雑さに応じて、 NVelocityStringTemplateなどのテンプレート ライブラリを使用することをお勧めします。

NVelocity を使用すると、次のようなテンプレートを作成できます。

"Hi $data.Name, please pick up your order number $data.Order."

次に、テンプレートとdataオブジェクトを NVelocity エンジンに渡し、プレースホルダーを置き換えます。

于 2012-11-07T22:15:11.153 に答える
0

あなたが持っているものは「十分」です... Replace() コールの結果を元に戻すことを覚えておく必要があります。

Str1 = Str1.Replace("%%Name%%", data.Name)
Str1 = Str1.Replace("%%Order%%", data.Order)

これをステートマシンとして実装することでパフォーマンスを向上させることができます。ヤグニ

別の構文を推奨する場合は、一般的なデータベース パラメーターの構文に合わせて、先頭に @ 記号または疑問符を付けます。または、名前付きパラメーターではなくインデックス付きパラメーターを使用できる場合は、別の回答で提案されているように String.Format() を使用できます。

于 2012-11-07T22:13:47.427 に答える
0

Stack Overflow の他の場所にも同様の質問がありました。https://stackoverflow.com/a/4077118/1721527にあるDoggetの回答の一部を変更したものを次に示します。

次のような関数を定義します。

public string Format(string input, object p)
{
    foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(p))
    {
        input = input.Replace("%%" + prop.Name + "%%", (prop.GetValue(p) ?? "(null)").ToString());
        return input;
    }
}

次のように呼び出します。

Format("test %%first%% and %%another%%", new { first = "something", another = "something else" })
于 2012-11-07T22:13:54.167 に答える