使用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替换txt中的字符串

您在一个非常长的字符串(碰巧包括换行符)上使用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