2015-10-22 71 views
0
Dim reader As StreamReader = New StreamReader("C:\Users\S160358\Desktop\file.txt") 

Do While reader.Peek() > -1 
    Dim line As String = reader.ReadLine() 

    If line.EndsWith("PSTAT") Then 
     Console.WriteLine("Yes") 
     Console.ReadLine() 
    Else 
     Console.WriteLine("No") 
     Console.ReadLine() 
    End If 
Loop 


Sample data 
    1111111111|22222222222222|3333333333|PSTAT 
    2222222222|33333333333333| 
    1111111111|PSTAT 
    AAAAAAAAAA|DDDDDDDDDDDDDD|FFFFFFFFFF|PSTAT 

我試圖檢查是否有任何行不以某些字符結尾。如果它返回「否」,那麼它將處理重新格式化功能。運行此代碼後,它將返回「是」,並且它應該返回「否」,因爲第二行不會以PSTAT結束。檢查文本文件中的每行是否以某個字符開頭

+0

如果行或文件以某個或某些字符開頭或結尾,則問題的標題和問題主體不一致。你能編輯它使其正確嗎? –

+1

看來,如果任何一行沒有'EndsWith(「PSTAT」)'你想跳出循環並返回'No'。如果是這樣,那麼你可以按照你的要求在你的'If'語句的'Else'塊中使用'Return'否''或者使用'Exit Do'。 – haraman

回答

2

如果要檢查所有的行,那麼你就不能確定結果,直到您已經檢查了所有的線(或發現沒有結束的行):

Dim reader As StreamReader = New StreamReader("C:\Users\S160358\Desktop\file.txt") 
Dim anyNo As Boolean = False 
Do While reader.Peek() > -1 
    Dim line As String = reader.ReadLine() 
    If Not line.EndsWith("PSTAT") Then 
    anyNo = True 
    Exit Do 
    End If 
Loop 
If anyNo Then 
    Console.WriteLine("No") 
Else 
    Console.WriteLine("Yes") 
End If 
Console.ReadLine() 

或者乾脆:

Dim anyNo As Boolean = _ 
    File.ReadAllLines("C:\Users\S160358\Desktop\file.txt") _ 
    .Any(Function(line) Not line.EndsWith("PSTAT")) 
If anyNo Then 
    Console.WriteLine("No") 
Else 
    Console.WriteLine("Yes") 
End If 
Console.ReadLine() 
相關問題