使用foreach替换txt中的字符串
本文关键字:字符串 txt foreach 替换 使用 | 更新日期: 2023-09-27 18:16:09
我试图用其他文件中的所有内容替换文本文件中的字符串。对于我的html电子邮件变量。但是每当我尝试运行foreach时,它就会给我一个错误,它可以将char转换为string。如何用不同的方式来做这件事呢?
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());
}
您在一个非常长的字符串(碰巧包括换行符)上使用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中的第二个替换语句也没有意义。你需要决定你真正想看的是什么。
这里不需要foreach,因为lines已经是一个字符串,调用foreach会使变量's'成为一个字符。更重要的是,s. tostring()语句不做任何事情,因为它返回一个字符串,s本身保持不变。
此外,考虑在'using'语句中封闭reader