使用VB.NET从分隔文件中删除空白字段

时间:2015-06-30 00:42:33

标签: vb.net delimited-text

使用VB.NET(VS2013)我想读取分隔文件并删除一个字段,如果所有记录都有相同的空白字段(可能是每个记录多个字段)。分隔文件可以有“x”列数和“y”行数,一旦删除了空白字段,我需要将其作为新的分隔文件写回。

输入文件将具有必须维护的标头,并且必须维护记录的顺序。我熟悉使用TextParser来读取文件并熟悉编写文件 - 我需要帮助的是读取空白字段并删除整个文件中存在的字段。

我以为我必须使用数据网格,但从未使用它们,所以寻找一些见解让我指明方向。

谢谢!

2 个答案:

答案 0 :(得分:0)

我假设每一行都用换行符分隔...作为文本文件打开,一次读取一行并使用Split方法将该行拆分为一个字符串数组。 split方法将使用一个参数来定义您正在使用的分隔符。打开目标文件并使用循环写入字符串数组。

答案 1 :(得分:0)

更新

在考虑之后,您可能会有包含几个空白列的记录,其余的则包含数据。我不确定您是否要删除这些列,因为如果您这样做,就会丢失该行的结构。

因此,您可以执行StringSplitOptions.RemoveEmptyEntries而不是使用Split(),然后执行一些Linq以查明Split()是否生成了一个空字符串数组。< / p>

类似的东西(结果相同)......

Imports System
Imports System.Linq

Public Module Module1

    Public Sub Main()
        Dim data As String = "|||||"
        Dim pieces As String() = data.Split("|"c)
        If pieces.Where(Function(p) String.IsNullOrEmpty(p) = False).Count = 0 Then
            Console.WriteLine("All elements are empty")
        Else
            ' Do something
        End If
    End Sub
End Module

Demo

OLD ANSWER

String.Split()的超载超出StringSplitOptions。将StringSplitOptions.RemoveEmptyEntriesString.Split()一起使用,如果所有记录都为空,那么您最终会得到一个长度为0的数组,您可以忽略它。

Imports System

Public Module Module1
    Public Sub Main()
        Dim data As String = "|||||"
        Dim pieces As String() = data.Split(new Char() {"|"}, StringSplitOptions.RemoveEmptyEntries)
        If pieces.length = 0 Then
            Console.WriteLine("All elements are empty")
        Else
            ' Do something
        End If
    End Sub
End Module

结果:

All elements are empty

Demo