使用VB.NET(VS2013)我想读取分隔文件并删除一个字段,如果所有记录都有相同的空白字段(可能是每个记录多个字段)。分隔文件可以有“x”列数和“y”行数,一旦删除了空白字段,我需要将其作为新的分隔文件写回。
输入文件将具有必须维护的标头,并且必须维护记录的顺序。我熟悉使用TextParser来读取文件并熟悉编写文件 - 我需要帮助的是读取空白字段并删除整个文件中存在的字段。
我以为我必须使用数据网格,但从未使用它们,所以寻找一些见解让我指明方向。
谢谢!
答案 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
String.Split()
的超载超出StringSplitOptions
。将StringSplitOptions.RemoveEmptyEntries
与String.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