我正在尝试将文本文件中的字符串替换为另一个文件中的所有内容。对于我的HTML电子邮件变量。 但每当我尝试运行foreach时,它会给我一个错误,它可以将char转换为字符串。如何以不同的方式做到这一点?
StreamReader myreader = new StreamReader("VUCresult.txt");
StreamReader myreaderhtml = new StreamReader("htmlemail.html");
string lines = myreader.ReadToEnd();
string htmlmailbody = myreaderhtml.ReadToEnd();
if (lines == "Der er ikke nogen udmeldinger idag")
{
htmlmailbody.Replace("ingen", lines);
}
else
{
foreach (string s in lines)
{
htmlmailbody = htmlmailbody.Replace("Row2", s);
}
htmlmailbody = htmlmailbody.Replace("Row1", lines);
htmlmailbody = htmlmailbody.Replace("Row3", DateTime.Now.ToString());
}
答案 0 :(得分:1)
你在一个很长的字符串上使用foreach
(恰好包含换行符);这将使你回归每个角色。
要获取文件中的所有行(作为集合),只需使用File.ReadAllLines
:
string htmlmailbody;
using StreamReader myreaderhtml = new StreamReader("htmlemail.html"))
{
htmlmailbody = myreaderhtml.ReadToEnd();
}
string[] lines = File.ReadAllLines("VUCresult.txt");
foreach (string s in lines)
{
...
}
你原来的if
检查在这里没有意义,因为你有一个行集合而不是整个文件,而你在else中的第二个替换语句也没有意义。你需要决定你真正想要看的东西。
答案 1 :(得分:0)
你不需要这里的foreach,因为line已经是一个字符串,并且调用foreach就可以使变量变为' s'一个炭火。更重要的是,语句s.ToString()没有做任何事情,因为它返回一个字符串,使s本身保持不变。
此外,请考虑将读者封闭在'使用'言。