这是一个答案。我使用控制台作为示例。请参阅下面的代码。
Imports System.Text
Imports System.IO
Module Module1
Sub Main()
Dim blnFound As Boolean = False
Console.WriteLine("LicensePlate: ")
Dim strLicensePlate As String = Console.ReadLine()
Dim text As String = File.ReadAllText("TextData.txt")
Dim index As Integer = text.IndexOf("" & strLicensePlate)
If index >= 0 Then
blnFound = True
End If
If blnFound = False Then
Console.WriteLine("FullName: ")
Dim strFullName As String = Console.ReadLine()
Console.WriteLine("ArrivalDate: ")
Dim strArrivalDate As String = Console.ReadLine()
Console.WriteLine("ArrivalTime: ")
Dim strArrivalTime As String = Console.ReadLine()
Using w As StreamWriter = File.AppendText("TextData.txt")
WriteData(strLicensePlate, strFullName, strArrivalDate, strArrivalTime, w)
End Using
Else
Console.WriteLine("DepartureDate: ")
Dim strDepartureDate As String = Console.ReadLine()
Console.WriteLine("DepartureTime: ")
Dim strDepartureTime As String = Console.ReadLine()
Dim lines() As String = File.ReadAllLines("TextData.txt")
For i As Integer = 0 To lines.Length - 1
If lines(i).Contains(strLicensePlate) Then
lines(i + 4) = "DepartureDate:" & strDepartureDate
lines(i + 5) = "DepartureTime:" & strDepartureTime
File.WriteAllLines("TextData.txt", lines)
Exit For
End If
Next
Display(strLicensePlate)
End If
Console.ReadKey()
End Sub
Private Sub WriteData(ByVal strLicensePlate As String, ByVal strFullName As String, ByVal strArrivalDate As String, _
ByVal strArrivalTime As String, ByVal w As TextWriter)
w.WriteLine("#")
w.WriteLine("LicensePlate: {0}", strLicensePlate)
w.WriteLine("FullName: {0}", strFullName)
w.WriteLine("ArrivalDate: {0}", strArrivalDate)
w.WriteLine("ArrivalTime: {0}", strArrivalTime)
w.WriteLine("DepartureDate:")
w.WriteLine("DepartureTime:")
End Sub
End Module
WriteData 方法用于在汽车到达时写入数据。如您所见,DepartureDate 和 DepartureTime 为空。获取text.IndexOf就是知道输入的LicensePlate是否已经存在。如果它还不存在,则索引返回-1。如果存在,则要求用户提供出发日期和时间。并且空白的出发日期和时间将替换为新输入的日期和时间。
File.ReadAllLines()逐行获取txt数据,逐行搜索使用lines(indexNumber).Contains的关键字。如果lines(indexNumber).Contains 返回true,则开始使用此代码将空的出发日期和时间替换为新输入的数据,
lines(i + 4) = "DepartureDate:" & strDepartureDate
lines(i + 5) = "DepartureTime:" & strDepartureTime
索引号还有额外的 4 和 5,因为索引当前指向 LicensePlate 的位置,而 DepartureDate 和 DepartureTime 是 4 和 5 行下方的 LicensePlate分别。
补充:
Private Sub Display(ByVal strLicensePlate As String)
Dim lines() As String = File.ReadAllLines("TextData.txt")
For i As Integer = 0 To lines.Length - 1
If lines(i).Contains(strLicensePlate) Then
Console.WriteLine(lines(i + 1))
Console.WriteLine(lines(i + 2))
Console.WriteLine(lines(i + 3))
Console.WriteLine(lines(i + 4))
Console.WriteLine(lines(i + 5))
File.WriteAllLines("TextData.txt", lines)
Exit For
End If
Next
End Sub
上面的代码正在显示数据。只需将Console.WriteLine 替换为您想要放置数据的任何变量textbox 或label。并且不要忘记在else 部分之后添加Display(strLicensePlate) For Next