.net 如何读取基于字符串的文本文件和报表

.net 如何读取基于字符串的文本文件和报表,.net,vb.net,.net,Vb.net,我有一个VB.net程序,它逐行读取文本文件并报告它。它工作得很好,但现在我只想读不以“F”结尾的行。例如,我的文本文件可能如下所示: dlksfjF kdjflF EKRJEK LDKJFLK oewiur mkquoi 我只想展示: EKRJEK LDKJFLK oewiur mkquoi 我目前的代码是: Dim list As New List(Of String) Using r As StreamReader = New StreamReader("C:\text.txt")

我有一个VB.net程序,它逐行读取文本文件并报告它。它工作得很好,但现在我只想读不以“F”结尾的行。例如,我的文本文件可能如下所示:

dlksfjF
kdjflF
EKRJEK
LDKJFLK
oewiur
mkquoi
我只想展示:

EKRJEK
LDKJFLK
oewiur
mkquoi
我目前的代码是:

Dim list As New List(Of String)

Using r As StreamReader = New StreamReader("C:\text.txt")
    Dim line As String = r.ReadLine

    If line <> "*F" Then
        Do While (Not line Is Nothing)
            list.Add(line)
            Console.WriteLine(line)
            line = r.ReadLine
        Loop
    End If
End Using
Dim列表作为新列表(字符串)
使用r作为StreamReader=newstreamreader(“C:\text.txt”)
作为字符串的尺寸线=r.ReadLine
如果行“*F”,则
边做边做(不是线什么都不是)
列表。添加(行)
控制台写入线(行)
line=r.ReadLine
环
如果结束
终端使用
而不是:

If line <> "*F" Then
它是重载的,因此您还可以告诉它忽略案例并根据需要指定区域性。例如:

“忽略大小写并使用当前区域性
如果line.EndsWith(“F”,True,CultureInfo.CurrentCulture)=False,则
'忽略大小写并通过字符串比较使用当前区域性
如果line.EndsWith(“F”,StringComparison.CurrentCultureIgnoreCase)=False,则

在VB之外,网络名称空间充满了强大的方法和扩展。

问题的根源:

If line <> "*F" Then

File.ReadLines(文件名)。Where(line=>!line.EndsWith(“F”))
File.ReadLines(文件名)。Where(Function(line)(而不是line.EndsWith(“F”))
(VB.Net)如果在If行上未处理“NullReferenceException”。EndsWith(“F”)=False,则这是另一个问题-您已经读取了文件的末尾。你的循环在F的IF测试中,所以它无论如何都不会过滤掉它们。读一行;对其进行测试,如果确定,则添加;重复一遍。请注意,还有String.IsNullOrEmpty用于测试字符串,但在本例中,问题在于streamreader的使用方式。
If line <> "*F" Then
    line = r.ReadLine

    Do While (Not line Is Nothing)
        If (Not line.EndsWith("F")) Then 
             Continue Do
        End If

        list.Add(line)

        Console.WriteLine(line)

        line = r.ReadLine
    Loop