0

C# 4.0vs10ASP .Net MVC 4.0の使用

サンプル文字列は次のとおりです。

string x = "herr <FirstName> <LastName> , \n With due respect and humble submission, I , the student of <Semester>,<Year> of <DepartmentName> of <UniversityName>."

数百万行のデータベースがあり、さまざまな (これらの) 情報があります。

文字列を確認する必要があります。このタグ「<>」が見つかった場合、データテーブルの行ごとに、「<>」タグ内のフィールドが置き換えられます。私が言っていることが理解できません。例を挙げさせてください:

文字列内にデータテーブルの各行が見つかった場合、現在の DataRow の FirstName がここで置き換えられます。お気に入り :

foreach(DataRow drow in dt.Rows)
{
    string body = "herr " + drow["FirstName"] + " " + drow["LastName"] + ", \n With due respect and humble submission, I , the student of " + drow["Semester"] + "," + drow["Year"] + " of " + drow["DepartmentName"] + " of " + drow["UniversityName"] + ".";

sendmail(body);
}

正規表現についての知識はありません。これを行うための簡単で簡単で賢明な方法はありますか?

4

2 に答える 2

2

簡単な解決策は、Replace メソッドを使用することです。

string x = "herr <FirstName> <LastName> , \n With due respect and humble submission, I , the student of <Semester>,<Year> of <DepartmentName> of <UniversityName>."




foreach(DataRow drow in dt.Rows)
{
   string body = x.Replace("<FirstName>", drow["FirstName"]).
                Replace("<LastName>", drow["LastName"]).
                Replace("<Semester>", drow["Semester"]).
                Replace("<Year>", drow["Year"]).
                Replace("<DepartmentName>", drow["DepartmentName"]).
                Replace("<UniversityName>", drow["UniversityName"]);

    sendmail(body);
}

編集:

「<>」タグ内の内容が決まっていない場合は、以下の拡張方法を利用できます。

public static class StringExtensions
{
    public static string ReplaceString(this string s, string newString)
    {
        int startIndex = s.IndexOf("<");

        s = s.Insert(startIndex, newString);

        startIndex = s.IndexOf("<"); //redetermine the startIndex in a new string generated above
        int length = s.IndexOf(">") - startIndex + 1;

        return s.Remove(startIndex, length);
    }
}

このメソッドは、最初の "<" と最初の ">" を検索し、その中のタグとコンテンツを置き換えるだけです。次の方法で使用できます。

string body = x.ReplaceString(drow["value for dynamicly defined tag"]).
  ReplaceString(drow["value for dynamicly defined tag 2"])

等々...

ノート:

上記の例で最初に新しい値を挿入してタグを削除する代わりに、replace メソッドを使用することもできましたが、タグ内のコンテンツはユーザー入力に依存する可能性があるため、2 つのタグが同じコンテンツを持つ可能性があり、Replace メソッドはその際にトラブルの原因となります。

于 2013-01-17T07:50:04.447 に答える
0

string.Format はここでのあなたの友達だと思います。

例:

string x = string.Format("herr {0} {1} , \n With due respect and humble submission, I , the student of {2},{3} of {4} of {5}.", drow["FirstName"], drow["LastName"], drow["Semester"], drow["Year"], drow["DepartmentName"], drow["UniversityName"]);
于 2013-01-17T07:31:41.657 に答える