2017-03-17 9 views
0

私は持っているリストのすべてのユーザ(リスト<ユーザ)にカスタム電子メールメッセージを送信する必要があります。 (私はC#.NETを使用しています) 私は "[?& ="で始まり、 "variableName"が中間にあり、 "]"で終わる)すべての式を実際のユーザープロパティ値。でこれを行うには実用的でクリーンな方法はあり変数名を実際のクラスに置き換えるプロパティ - 正規表現? (C#)

"Hello, Mary. A gift will be sent to Boulevard Spain 918, 11300, Uruguay. 
If [email protected] is not your email address, please contact us." 

"Hello, [?&=Name]. A gift will be sent to [?&=Address], [?&=Zipcode], [?&=Country]. 
If [?&=Email] is not your email address, please contact us." 

私は、ユーザーのためにこれを取得したいと思います:

は、ですから、例えば私はこのようなテキストを持っている場合正規表現?

+0

aplicationジャバスクリプト、PHPや他の言語? – Scaffold

+0

@Scaffold私の悪い、私は指定しなかった(質問を編集した)。私はC#を使用しています –

答えて

0

正規表現を適用するのに適しています。

したい正規表現は、あなたが置換値のためのカスタム関数を使用することができますメソッドを使用して、入力文字列に置き換える行う必要があります。この/\[\?&=(\w*)\]/example

のように見えます。その関数の内部では、最初のキャプチャ値をKeyとして使用して、対応する正しい値を引き出します。

あなたが使用している言語を指定していないので、最近私自身のプロジェクトのために作ったC#とJSの例を紹介します。

擬似コード

Loop through matches 
Key is in first capture group 
Check if replacements dict/obj/db/... has value for the Key 
    if Yes, return Value 
    else return "" 

C#

email = Regex.Replace(email, @"\[\?&=(\w*)\]", 
       match => //match contains a Key & Replacements dict has value for that key 
        match?.Groups[1].Value != null 
        && replacements.ContainsKey(match.Groups[1].Value) 
         ? replacements[match.Groups[1].Value] 
         : ""); 

JS

var content = text.replace(/\[\?&=(\w*)\]/g, 
     function (match, p1) { 

      return replacements[p1] || ""; 

     }); 
関連する問題