2012-12-21 45 views
3

什麼是搜索文本文件看起來像這樣的最佳方式搜索文本..?在一個.txt

efee || NBR |地址|名稱|電話|城市|州|郵編
ABC || 455 | gsgd |第一持續| GSG | FEF | JK | 0393
gjgj || JFJ | DDG
|倒數第一| FHT |稀土| HN |日.. 。更多的行...

我開始閱讀文件和它的所有上下文與一個streamreader 我正在計算「|」並抓住第5和第6之間的文本使用子,但我不知道怎麼辦的計數「|」。或者如果有人有更好的主意,我願意接受。 試過這樣的事情:

StreamReader file = new StreamReader(@"..."); 
     string line; 
     int num=0; 
     while ((line = file.ReadLine()) != null) 
     { 
      for (int i = 1; i <= 6; i++) 
      { 
       if (line.Contains("|")) 
       { 
        num++; 
       } 
      } 
      int start = line.IndexOf("|"); 

      int end = line.IndexOf("|"); 
      string result = line.Substring(start, end - start - 1); 
     } 

我想要的文字我beleive始終是5,6日之間「|」

+2

使用.NET TextFieldParser類。 –

回答

2

你能做到這樣的:

var res = File 
    .ReadLines(@"FileName.txt") 
    .Select(line => line.Split(new[]{'|'}, StringSplitOptions.None)[5]) 
    .ToList(); 

這從文件,其中每個串的一部分產生一個List<strings>從第五和第六'|'分離器之間截取的文件的相應的行。

+0

得到埃羅不能轉換stringsplitoptions爲char – Jt2ouan

+0

@ERead這應該是現在固定。 – dasblinkenlight

+0

是的,這很好。現在我只是愛操縱我提煉出來,並把它分割成兩個差異串,姓氏和名字 – Jt2ouan

0

你可以每行分成數組:

while ((line = file.ReadLine()) != null) 
{ 
    var values = line.Split('|'); 
} 
1

對於分隔文件,您應該使用解析器 - Microsoft.VisualBasic.FileIO命名空間中有一個 - TextFieldParser類,儘管您也可以查看第三方庫,如流行的FileHelpers

一個更簡單的方法是在|角色並獲得在返回string[]的相應指標值,用string.Split,但是,如果任何字段被轉義,並且可以有效地遏制|內部,這將失敗。

+0

+1 FileHelpers –

0

這應該工作

string txt = File.ReadAllText("file.txt"); 
string res = Regex.Match(txt, "\\|*?{5}(.+?)\\|", RegexOptions.Singleline).Result("$1");