-1

オブジェクトに基づくいくつかの値に置き換えるために、いくつかのプレースホルダーを使用している文字列があります。

次のようなものです。

Hello User <#= string#>

式を見つける必要が<#= string #>あります。文字列は静的ではありません。式は値に置き換える必要があります。

これは正規表現でどのように行うことができますか? 助けてください。非常に多くのプレースホルダーがあり、文字列は実際にはクラスのプロパティ名です。

4

5 に答える 5

3

これを行うために正規表現は必要ありません。単純な置換で機能するはずです。

string foo = "Hello User <#= UserName #>";
string name = "deepak";
string bar = foo.Replace("<#= UserName #>", name);

結果:

こんにちはユーザー

編集:

これを行うためにまだ正規表現は必要ありません:

Dictionary<string, string> placeholders = new Dictionary<string, string>();
placeholders.Add("<#= UserName #>", "deepak");
placeholders.Add("<#= Address #>", "foo address");
placeholders.Add("<#= City #>", "foo city");
placeholders.Add("<#= State #>", "foo state");
placeholders.Add("<#= Zip #>", "foo zip");

string htmlTemplate ="... etc.";

foreach (KeyValuePair<string, string> kvp in placeholders)
{
     htmlTemplate = htmlTemplate.Replace(kvp.Key, kvp.Value);
}

どのように入力するかはあなた次第です。Dictionary<string, string>

于 2013-11-06T09:46:25.933 に答える
1

非常に多くのプレースホルダーに対して非常に多くの正規表現を定義する方法は、まったく良くありません。置換する文字列のテキストが大きいほど、実行時間が長くなります。このタスクを実行するには、StringBuilder または string を試してください。

System.Text.StringBuilder builder = new System.Text.StringBuilder("sample <#test>");
builder.Replace("<#test>", "test");
builder.ToString()
于 2013-11-06T09:50:37.427 に答える
0
        Regex r = new Regex("<#= UserName #>");
        string result = r.Replace(input, MyValue);
于 2013-11-06T09:46:16.460 に答える