使用VB删除.csv字符串中第一个值后的换行符

时间:2013-01-17 20:25:56

标签: vb.net csv replace line-breaks streamwriter

我有一个小函数,可以从存储在数据网格中的字符串创建.csv文件。

Dim rowcount As Integer = DataGridView1.Rows.Count - 1
        For m As Integer = 0 To rowcount
            Dim strrowvalue As String = ""
            strrowvalue += CStr(DataGridView1.Rows(m).Cells(0).Value)
            For n As Integer = 1 To DataGridView1.Columns.Count - 1
                If DataGridView1.CurrentCell.Value Is DBNull.Value Then
                    strrowvalue += "," + "0"
                End If
                If DataGridView1.Rows(m).Cells(n).Value Is DBNull.Value Then
                    strrowvalue += "," + "0"
                Else
                    strrowvalue += "," + CStr(DataGridView1.Rows(m).Cells(n).Value)
                End If
            Next

            If m <> rowcount Then
                streamwriter.WriteLine(strrowvalue)
            End If
        Next

然而,在第一个值之后插入换行符。这会导致Excel和其他程序将第一个值放在第1行,然后该行的其余值放在第2行。

示例:

  1. 100,

  2. 555,333,333,666,777

  3. 200,

  4. 444,555,453,345,778

  5. 应该是:

    1. 100,555,333,333,666,777

    2. 200,444,555,453,345,778

    3. 有什么想法吗?

      编辑:问题已被修改,以表明它是一个插入字符串的换行符,而不是空格。

2 个答案:

答案 0 :(得分:2)

从代码中可以看出空间来自哪里,摆脱空间的最佳方法可能是防止它首先发生。

此外,该空间将导致Excel添加换行符(我刚刚对其进行了测试以确保)。事实上,Excel默默地吞噬了这个空间。如果在您的案例中插入换行符,则表明该字符不是空格,而是其他内容。

除此之外,删除空格的代码也可以。您可能忘记将结果分配给变量:

strrowvalue = strrowvalue.Replace(" ", "")

编辑:因为它显然是回车符而不是空格,请使用:

strrowvalue = strrowvalue.Replace(vbCr, "")

或者,如果它是一个完整的Windows风格的换行符:

strrowvalue = strrowvalue.Replace(vbCrLf, "")

如果这些都不起作用(很奇怪!),试试这个:

strrowvalue = strrowvalue.Replace(vbLf, "")

在其他新闻中,你应该在这里使用StringBuilder,它会比许多重复的字符串连接好得多。

答案 1 :(得分:0)

根据插入的换行符类型,我会将此行更新为以下之一:

strrowvalue += CStr(DataGridView1.Rows(m).Cells(0).Value).Replace(vbCrLf,"")

- 或 -

strrowvalue += CStr(DataGridView1.Rows(m).Cells(0).Value).Replace(vbCr,"")

- 或 -

strrowvalue += CStr(DataGridView1.Rows(m).Cells(0).Value).Replace(vbLf,"")