我有一个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
答案 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