2012-11-18 60 views
-2

我的文本文件是這樣的:如何搜索特定字符串並返回包含該字符串的整行?

2012年11月18日test1的

2012年11月19日測試2

二零一二年十一月二十〇日TEST3

2012年11月21日TEST4

2012年11月22日TEST5

2012年11月23日TEST6

2012年11月24日TEST7

2012年11月25日test8

如何搜索當前日期和返回一個包含日期的整條生產線?舉例來說,如果我今天運行程序,它應該返回

2012年11月18日test1的

代碼:

string searchKeyword = monthCalendar1.SelectionStart.ToShortDateString(); 
string[] textLines = File.ReadAllLines(@"c:\temp\test.txt"); 
List<string> results = new List<string>(); 

foreach (string line in textLines) 
{ 
    if (line.Contains(searchKeyword)) 
    { 
     results.Add(line); 
     listBox2.Items.Add(line); 
    } 
} 
+1

你嘗試過什麼? (分解成幾個步驟,並讓我們知道哪一個已經給你帶來了問題。) –

+0

好吧,我做了日曆事件,我做了所有事情,但我想從文件中抓取事件並在當天顯示它,只有當天我嘗試了很多的代碼,我試試這最後一個 字符串searchKeyword = monthCalendar1.SelectionStart.ToShortDateString(); string [] textLines = File.ReadAllLines(@「c:\ temp \ test.txt」); 列表 results = new列表(); foreach(文本行中的字符串行) if(line.Contains(searchKeyword)) { { 結果。添加(線); } } 如何將當前事件保存在列表框中 – user1834172

+0

將此編輯到您的問題中,包括結果是什麼。 「將數據傳輸到列表框」這個真正的問題與文件讀取部分完全分離嗎? –

回答

2

首先 - 通過線條分割文本。例如。這種方式:

// string[] lines = File.ReadAllLines(@"c:\temp\test.txt"); 
string[] lines = text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 

- 發現與在指定格式的當前日期字符串開頭的行:

string date = DateTime.Now.ToString("MM/dd/yyyy");  
IEnumerable<string> results = lines.Where(l => l.StartsWith(date)); 

如果您完全確定,有可能是隻有一個這樣的行,然後用

string result = lines.SingleOrDefault(l => l.StartsWith(date)); 

這裏是你的代碼固定和重構(你應該使用自定義日期字符串格式,並使用ContainsStartsWith代替)

string searchKeyword = monthCalendar1.SelectionStart.ToString("MM/dd/yyyy"); 
string[] textLines = File.ReadAllLines(@"c:\temp\test.txt"); 

foreach (string line in textLines.Where(l => l.StartsWith(searchKeyword))) 
    listBox2.Items.Add(line); 
+0

好吧我怎麼能顯示結果按列表框中的行<3 – user1834172

+0

@ user1834172不使用'字符串searchKeyword = monthCalendar1.SelectionStart.ToShortDateString();'使用自定義格式,因爲我已經提供:'string searchKeyword = monthCalendar1.SelectionStart.ToString(「MM/dd/yyyy」);'。並使用'.StartsWith'而不是'Contains'。 –

+0

好吧,如果我想改變你的代碼這個代碼怎麼能做到這一點? in this private void listBox2_SelectedIndexChanged(object sender,EventArgs e) – user1834172

1
var matches = new List<string>(); 
var currentDate = DateTime.Now.ToString("dd/MM/yyyy"); 

using (StreamReader sr = new StreamReader("file.txt")) 
{ 
    var line = sr.ReadLine(); 
    if(line.StartsWith(currentDate)) 
     matches.Add(line); 
} 

要將它們添加到列表框中:

foreach (var match in matches) 
    listBox.Items.Add(match); 
+0

好吧,我可以如何顯示由列表框<3 – user1834172

+0

和這項工作的結果:) thx隊友 – user1834172

相關問題