首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在使用StreamWriter时去掉空行

如何在使用StreamWriter时去掉空行
EN

Stack Overflow用户
提问于 2016-02-29 08:39:11
回答 2查看 1.7K关注 0票数 0

我试图从datatable中编写一个文本文件,该文本文件稍后将由其他应用程序导入,因此,我需要导出文件中没有空行(在末尾或之间)。我使用了以下代码:

代码语言:javascript
运行
复制
DataTable table = FisierSoldata.dtSoldata;
 var result = new StringBuilder();
        foreach (DataRow row in table.Rows)
        {
            for (int i = 0; i < table.Columns.Count; i++)
            {
                result.Append(row[i].ToString());
                result.Append(i == table.Columns.Count - 1 ? "\n" : " ");
            }
            result.AppendLine();
        }

        StreamWriter objWriter = new StreamWriter(filePath, false);
        objWriter.WriteLine(result.ToString());
        objWriter.Close();

我的datatable有26条记录,当文件生成时,它有一条数据线,一条空行和另一条数据线等等,在最后一条数据线之后,它有3条空行。我怎样才能修改代码,使之只有数据链路,没有数据之间的空数据,没有最后3个空的?致以敬意,

LE:通过读取类似的线程,我找到了一个解决方案,但解决方案是同时使用streamwriter和streamreader,以便从将要生成的文件中删除不需要的数据(空行)。但我想知道是否有办法从一开始就得到所需的文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-29 08:47:31

为什么不使用File.WriteAllLines呢?它在幕后使用StreamWriter,但允许更简单的代码:

代码语言:javascript
运行
复制
var fileLines = table.AsEnumerable()
    .Select(row => String.Join(" ", row.ItemArray))
    .Where(line => !String.IsNullOrWhiteSpace(line));
File.WriteAllLines(filePath, fileLines);

但是你真的想用一个空格作为列分隔符吗?这很容易出错。只要一个字段值包含一个空格,它就会失败。

票数 3
EN

Stack Overflow用户

发布于 2016-02-29 09:05:58

我会尽量避免将空行添加到Stringbuild中。Stringclass应该提供适当的函数,可能是这样的:

代码语言:javascript
运行
复制
            String stringToTestIsEmpty = row[i].ToString();
            //Check if it is not an empty line
            if( ! String.IsNullOrWhiteSpace(stringToTestIsEmpty ))
            {
                resutl.Append(stringToTestIsEmpty);
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35695041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档