2013-04-10 61 views
0

我一直在處理用戶輸入其名稱和生日的程序。然後將其保存爲.txt文件的格式如下在'.txt'文件中搜索名稱並顯示相應的日期

  • 李四2000年4月10日< ----(名稱和日期由一個「標籤」,而不是一個「空間」隔開)

一切都在程序中工作,我可以根據月份或名稱等排序日期顯示數據就好了,但我不知道如何讓搜索功能正常工作。我有一個文本框,用戶將輸入一個名稱進行搜索。因此,如果他們輸入John Doe,程序應該搜索該文本文件(birthday.txt)並顯示日期4/10/2000。如果找不到該名稱,程序應顯示一條消息,指出找不到該名稱。請幫忙!

+0

請問您可以展示您到目前爲止所嘗試的內容,以便人們可以幫助您修復代碼。 – sloth 2013-04-10 14:10:19

回答

0

也許:

Dim people = From line In File.ReadLines(path) 
     Let userprops = line.Split({vbTab}, StringSplitOptions.None) 
     Let Name = userprops.First() 
     Let BirthDate = userprops.Last() 
     Where Name.IndexOf(txtUsername.Text, StringComparison.OrdinalIgnoreCase) > -1 

If Not people.Any() Then 
    MessageBox.Show("No user found with that name") 
Else 
    Dim firstUserBirthDate = people.First().BirthDate 
    MessageBox.Show(firstUserBirthDate.ToString()) 
End If 

我用IndexOf代替=向您展示如何搜索不區分大小寫和名稱的一部分。

+0

謝謝!我今晚會嘗試一下,看看我是如何制定出來的。這一行Dim people = From line在File.ReadLines(path)中,我必須在那裏編輯任何東西嗎?我猜我刪除了「路徑」並將C:/birthday.txt或文件所在的位置?對於愚蠢的問題抱歉。 – Cliff 2013-04-10 15:00:19

+0

@Cliff:至少必須使用.NET 3.5,因爲這是一個Linq查詢。如果你使用3.5你不能使用'File.ReadLines',那麼你必須使用'File.ReadAllLines'。是的,用實際路徑替換路徑。我沒有測試過,也許你需要添加ToList()到查詢中(首先添加查詢,然後添加'ToList'),它實現了查詢,因爲'File.ReadLines'使用'StreamReader',可能是在第一個「people.Any」之後處理。 – 2013-04-10 15:08:02

+0

感謝您的幫助! – Cliff 2013-04-11 03:17:09

相關問題