2013-03-06 66 views
0

所以我有這樣的建築在文本搜索詞文本查找使用LINQ

FileStream fs = new FileStream(fileName, FileMode.Open); 
StreamReader sr = new StreamReader(fs); 
fullText = sr.ReadToEnd(); 
string[] arr = fullTetx.Split(' '); 
for (int i = 0; i < arr.Length; i++)// 
{ 
     if (arr[i].Trim() == "LOAD") 
      Console.WriteLine(arr[i].Trim()); 
} 
sr.Close(); 
fs.Close(); 

我必須把所有類似的話忽略的情況下使用LINQ。

例如:

LOAD(PLOT)= SET 4 = THRU 16,34 THRU 37, 48 THRU 53,61 FORCE(PLOT,角部)DS 應力(PLOT,角部)媽媽爸爸 SPC = 1 LOAD = 1 負載,負載。

,我必須得:

負荷負荷負荷負荷

+4

的信息:有一個靜態System.IO.File.ReadAllText方法,做你的前3行:http://msdn.microsoft.com/fr-fr/library/system.io.file.readalltext%28v=vs.80%29.aspx – Kek 2013-03-06 10:23:32

+0

國際海事組織,這個問題是更適合http://codereview.stackexchange.com。無論如何,[這裏是](http://pastebin.com/ftgJCwGD)你的代碼的簡化版本。 – Leri 2013-03-06 10:32:01

回答

4

我不知道我的理解,其中負載從拍攝。它是否被重新編碼?如果是的話是這樣的:

foreach(var word in arr.Where(w => w.ToUpper() == "LOAD")) 
    Console.WriteLine(word); 
2

試試這個

var result = arr.Where(x => string.Equals(x, "LOAD",StringComparison.OrdinalIgnoreCase)).ToList(); 
2
var matches = Regex.Matches(fullTetx, @"load", RegexOptions.IgnoreCase); 
0

或者怎麼樣:

// If you want the lines that contain "LOAD" 
var loads = File.ReadLines(fileName). 
      SelectMany (l => l.Split(' ')). 
      Where (s => s.ToUpperInvariant().Contains("LOAD")); 

foreach(var s in loads) 
{ 
    Console.WriteLine(s); 
} 

// If you just want instances of "LOAD" 
var loads = File.ReadLines(fileName). 
      SelectMany (l => l.Split(' ')). 
      Where (s => s.ToUpperInvariant() == "LOAD"); 

foreach(var s in loads) 
{ 
    Console.WriteLine(s); 
}