使用 C#4.0 , vs10 , ASP .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>."
我有一个包含数百万行的数据库,它有不同的(这些)信息。
我必须检查字符串。其中“&lt;&gt;”对于每行数据表,找到“&lt;&gt;”内的字段的标签标签将被替换。我不明白我在说什么。请让我举个例子:
对于每行数据表,当找到字符串时,将在此处替换当前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);
}
我对RegularExpression一无所知。这样做的任何简单,容易和明智的方法?
答案 0 :(得分: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);
}
修改强>
如果“&lt;&gt;”之间的内容,您可以使用以下扩展方法标签不是预先确定的。
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);
}
}
该方法只搜索第一个“&lt;”和第一个“&gt;”并替换标签和内容。您可以通过以下方式使用它:
string body = x.ReplaceString(drow["value for dynamicly defined tag"]).
ReplaceString(drow["value for dynamicly defined tag 2"])
依旧......
注意:强>
我可以使用替换方法而不是先插入新值,而不是删除上面示例中的标记,但由于标记内的内容可能依赖于用户输入,因此两个标记可能具有相同的内容和在这种情况下,替换方法会造成麻烦。
答案 1 :(得分: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"]);