繁体   English   中英

C#Streamwriter格式化问题

[英]C# streamwriter formatting issue

首先,我要感谢Stackoverflow成员Pratap .R,因为他帮助我编写了代码。 我的替换功能之一仍然存在一个小的格式化问题。 发生的是,当我将</me>替换为; 我不能在行尾有一个; 在末尾。

using (FileStream strm = new FileStream(exportfile, FileMode.Create))
{
    using (StreamWriter writer = new StreamWriter(strm))
    {
        SqlCommand cmd = new SqlCommand(sql, con);
        SqlDataReader reader = cmd.ExecuteReader();

        for (int i = 0; i < reader.FieldCount; i++)
            writer.Write((i == 0 ? "" : "|") + reader.GetName(i));

        writer.Write("\n");

        while (reader.Read())
        {
            for (int i = 0; i < reader.FieldCount; i++)
            {
                writer.Write
                (
                    (i == 0 ? "" : "|") +
                    reader[i].ToString().Replace(@"<me> ","")
                        .Replace(@"</me>", "|").Replace(@"</me>", ";")
                        .Replace('\n', ' ').Replace('\r', ' ')
                );
            }

            writer.WriteLine();
        }

        reader.Close();
    }
}

这样您就可以看到何时将其替换为“;”。 我不能; 结束行。 任何建议或技巧总是适用的。

如果您不想将</me>替换为; ,您不应该只删除以下内容:

Replace(@"</me>", ";")

String对象也有一个很棒的TrimEnd()函数

string s = "Hello;";
s = s.TrimEnd((char)';');

有什么理由让您在一行上做那么多事情?

阅读您的代码会使我头疼!

string value = reader[i].ToString().Replace(@"<me> ", "").Replace(@"</me>|", "|").Replace(@"</me>", ";").Replace('\n', ' ').Replace('\r', ' ');

if (value.EndsWith(";"))
{
    value = value.Substring(0, value.Length - 1);
}
writer.Write((i == 0 ? "" : "|") + value);

您可以随时将其更改为:

writer.Write((i==0?"":"|") + reader[i].ToString().Replace(@"<me> ", "").Replace(@"</me>|", "|").Replace(@"</me>", "; ").Replace('\n', ' ').Replace('\r', ' '));  

只需添加一个空间,这是您下一步要做的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM