【问题标题】:removing additional space above last line text in textfile c#删除文本文件c#中最后一行文本上方的额外空格
【发布时间】:2018-02-05 07:51:37
【问题描述】:

我使用以下代码将数据网格视图中的条目转换为文本文件! (创建文本文件的过程成功)将数据网格视图条目转换为字符串后,我从外部附加一个字符串(这应该出现在文本文件的最后一行)

private void button1_Click_1(object sender, EventArgs e) // converting data grid value to single string
{
    StringBuilder file = new StringBuilder();
    for (int i = 0; i < dataGridView2.Rows.Count; i++)
    {
        for (int j = 0; j < dataGridView2.Rows[i].Cells.Count; j++)
        {
            var val = dataGridView2.Rows[i].Cells[j].Value;
            if (val == null)
                continue;//IF NULL GO TO NEXT CELL, MAYBE YOU WANT TO PUT EMPTY SPACE
            var s = val.ToString();
            file.Append(s.Replace(Environment.NewLine, " "));
        }

        file.AppendLine(); // NEXT ROW WILL COME INTO NEXT LINE
   }

   file.Append("Hello");
   using (StreamWriter sw = new
                   StreamWriter(@"C:\Users\sachinthad\Desktop\VS\Tfiles\file.txt"))
    {
        sw.Write(x);
    }   
}

但是当我检查文本文件时,外部字符串(在这种情况下为“Hello”)出现在最后一行,但它上面还有一个额外的空间!我怎样才能删除这个额外的空间?

【问题讨论】:

    标签: c# string append stringbuilder


    【解决方案1】:

    您可以使用 string.Join 连接字符串集合,并在其间使用分隔符。连同重构它以使用 linq .Select:

    var lines = dataGridView2.Rows.Select(row => string.Join(" ", 
                    row.Cells.Select(cell => cell.Value).Where(val => val != null));
    

    当然你也可以在整个行集合上使用它来将它们与新行连接起来:

    // Will eliminate problem of extra \n at the end
    var result = string.Join(Environment.NewLine, lines); 
    

    如果您更喜欢使用循环而不是 linq,那么您可以在内循环中执行的操作是将值添加到在外循环中初始化的 List&lt;string&gt;。在内循环结束后,在该列表的值上使用string.Join。伪代码:

    for each row:
        List<string> items = new List<string>();
        for each column in row:
            items.Add(value of column);
        file.Append(string.Join(" ", items));
    

    【讨论】:

    • thanx 我必须在哪里放置此代码 sn-p?在 llops 内部还是在它们之后?
    • @KasunKarunarathna - 而不是循环和 StringBuilder :) 看看 linq 和 Select :)。
    • 实际上我在最后一行上方有一个空行是否有办法调整我的初始代码以删除该空行? :(
    • @KasunKarunarathna - 是的:)答案中也提到了这种方式。在整个lines 集合上使用string.Join,如第二个代码sn-p 中所示。
    猜你喜欢
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    相关资源
    最近更新 更多