如何根据字符串读取文本文件和报告

时间:2014-08-09 12:16:01

标签: .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")
    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

2 个答案:

答案 0 :(得分:1)

而不是:

If line <> "*F" Then

使用:

If line.EndsWith("F") = False Then

它已重载,因此您也可以将其告知IgnoreCase并根据需要指定文化。例如:

' ignore case and use current culture
If line.EndsWith("F", True, CultureInfo.CurrentCulture ) = False Then

' ignore case and use current culture via string comparison
If line.EndsWith("F", StringComparison.CurrentCultureIgnoreCase ) = False Then

在VB之外,.NET名称空间是强大的方法和扩展。

答案 1 :(得分:1)

问题来源:

If line <> "*F" Then

不是与wildcard character的模式比较 - 它只是将您的line与&#34; * F&#34;进行比较串。所以任何其他字符串如&#34; asdasdF&#34;将通过以下条件:

<强> SOLUTION:

您需要的可能是String.EndsWith方法,也可以将您的条件置于循环中:

    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