Vb.net Net逐行读取文本文件并删除非alpha文本
所以我想逐行读取一个.txt文件,并检查当前行中是否包含alpha字符 如果不是,我想删除该行,然后继续下一行 我试着这样做,它检测到非阿尔法字符串。我所需要的只是从txt文件中删除当前行或字符串的函数。我正在处理大文件(高达2gb),因此读取全文并搜索当前字符串以删除它可能是一种糟糕且浪费时间的想法:Vb.net Net逐行读取文本文件并删除非alpha文本,vb.net,line,Vb.net,Line,所以我想逐行读取一个.txt文件,并检查当前行中是否包含alpha字符 如果不是,我想删除该行,然后继续下一行 我试着这样做,它检测到非阿尔法字符串。我所需要的只是从txt文件中删除当前行或字符串的函数。我正在处理大文件(高达2gb),因此读取全文并搜索当前字符串以删除它可能是一种糟糕且浪费时间的想法: Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim FILE_NAME As String = "E:\combo.txt"
Dim TextLine As String
If System.IO.File.Exists(FILE_NAME) = True Then
Dim objReader As New System.IO.StreamReader(FILE_NAME)
Do While objReader.Peek() <> -1
TextLine = objReader.ReadLine() & vbNewLine
If CheckForAlphaCharacters(TextLine) = True Then
'Removeline
End If
Loop
MessageBox.Show("File Does Not Exist")
End If
End Sub
Function CheckForAlphaCharacters(ByVal StringToCheck As String)
For i = 0 To StringToCheck.Length - 1
If Char.IsLetter(StringToCheck.Chars(i)) Then
Return False
End If
Next
Return True 'Return True if all chars are not characters
End Function
Private子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
Dim文件\u名称为String=“E:\combo.txt”
将文本行变暗为字符串
如果System.IO.File.Exists(File_NAME)=True,则
Dim objReader作为新System.IO.StreamReader(文件名)
Do While objReader.Peek()-1
TextLine=objReader.ReadLine()&vbNewLine
如果CheckForAlphaCharacters(TextLine)=True,则
“Removeline
如果结束
环
Show(“文件不存在”)
如果结束
端接头
函数CheckForAlphaCharacters(ByVal StringToCheck As String)
对于i=0到StringToCheck.Length-1
如果Char.isleter(StringToCheck.Chars(i))那么
返回错误
如果结束
下一个
Return True“如果所有字符都不是字符,则返回True”
端函数
信不信由你,你可以在一行中完成这一切:
Dim nonAlphaLines = File.ReadLines(FILE_NAME) _
.Where(Function(x) Not x.Any(Function(c) Char.IsLetter(c))) _
.ToArray()
例如,以下是一个文件:
123
abc
456
运行完上面的代码后,您将拥有如下数组:
您甚至可能不需要ToArray,但您没有真正指定要对非阿尔法线执行的操作
nonAlphaLines = { "123", "456" }
根据需要使用此阵列
如果要从文件中删除alpha行并在结尾处具有相同的文件,即要清理文件,则可以在文件较小时执行此操作:
File.WriteAllLines(FILE_NAME, _
File.ReadAllLines(FILE_NAME) _
.Where(Function(x) Not x.Any(Function(c) Char.IsLetter(c))) _
) _
)
如果文件很大,最好不要将其加载到内存中;使用ReadLines而不是ReadAllLines并写入新的\u文件\u名称:
File.WriteAllLines(NEW_FILE_NAME, _
File.ReadAllLines(FILE_NAME) _
.Where(Function(x) Not x.Any(Function(c) Char.IsLetter(c))) _
) _
)
嗯,我真的不知道该怎么办对不起,我是vb.net的新手。我逐行读一个文本文件。如果一行不包含字母字符(仅数字),则应从文本文件中删除该行。但是我不知道如何编写从文本文件中删除该行的函数。您没有说明如何处理这些行。。您正在将它们写回新文件吗?同一个文件?