如何解决VB.Net逐行读取文本文件并删除非Alpha文本
所以我想逐行读取.txt文件,并检查当前行中是否包含字母字符。
如果不是,我想删除该行,然后继续下一行。
我试图这样做,它检测到非字母字符串。我需要的只是从txt文件中删除当前行或字符串的函数。我正在处理大文件(最大2gb),因此阅读全文并搜索当前字符串以将其删除可能是一个不好的,浪费时间的主意:
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
解决方法
不管您信不信,您可以一站式完成所有事情:
Dim nonAlphaLines = File.ReadLines(FILE_NAME) _
.Where(Function(x) Not x.Any(Function(c) Char.IsLetter(c))) _
.ToArray()
例如,这是一个文件:
123
abc
456
完成上面的代码后,您将得到一个数组:
您甚至可能不需要ToArray,但是您并未真正指定要对非alpha行进行的操作
nonAlphaLines = { "123","456" }
使用此数组执行所需的操作。
如果您要从文件中删除字母行并在末尾使用相同的文件(即您要清理文件),则可以在文件较小的情况下执行以下操作:
File.WriteAllLines(FILE_NAME,_
File.ReadAllLines(FILE_NAME) _
.Where(Function(x) Not x.Any(Function(c) Char.IsLetter(c))) _
) _
)
如果文件很大,最好不要将其加载到内存中。使用ReadLines而不是ReadAllLines并写入NEW_FILE_NAME:
File.WriteAllLines(NEW_FILE_NAME,_
File.ReadAllLines(FILE_NAME) _
.Where(Function(x) Not x.Any(Function(c) Char.IsLetter(c))) _
) _
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。