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 方法而不是首先插入新值,而不是在上面的示例中删除标签,但是由于标签中的内容可能取决于用户输入,因此两个标签可能具有相同的内容,并且 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 回答