Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net Net逐行读取文本文件并删除非alpha文本_Vb.net_Line - Fatal编程技术网

Vb.net Net逐行读取文本文件并删除非alpha文本

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

所以我想逐行读取一个.txt文件,并检查当前行中是否包含alpha字符

如果不是,我想删除该行,然后继续下一行

我试着这样做,它检测到非阿尔法字符串。我所需要的只是从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
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的新手。我逐行读一个文本文件。如果一行不包含字母字符(仅数字),则应从文本文件中删除该行。但是我不知道如何编写从文本文件中删除该行的函数。您没有说明如何处理这些行。。您正在将它们写回新文件吗?同一个文件?