使用foreach

时间:2016-11-03 22:35:04

标签: c#

我正在尝试将文本文件中的字符串替换为另一个文件中的所有内容。对于我的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());
        }

2 个答案:

答案 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本身保持不变。

此外,请考虑将读者封闭在'使用'言。