2015-09-19 39 views
0

我用的是後續的代碼讀取文本文件行,並創建一個newone複製線(它的工作):C#讀取文本文件直到一個特定的詞,並在新的文本文件

StreamReader Read2; 

Read2 = File.OpenText("save" + campionatoselezTxt.Text + "bex.txt"); 
StreamWriter Write2 = File.CreateText("read" + campionatoselezTxt.Text + "bex.txt"); 


while (!Read2.EndOfStream) 
{ 

    string NewLine = ""; 
    for (int K = 0; K < 8; K++) 
    { 
     if (K != 0) 
      NewLine = NewLine + ";" + Read2.ReadLine(); 
     else 
      NewLine = Read2.ReadLine(); 
    } 
    Write2.WriteLine(NewLine); 
} 

Read2.Close(); 
Write2.Close(); 

有了這個代碼,我一直讀到文本文件的末尾,並用特定的分隔符(;)放置了行(組8),但是當我找到一個特定的單詞時,我想停止閱讀源文本文件:「投注。我能做到這一點謝謝:)

編輯:?!這是源文本文件的例子:

Slask 

Termalica 1.67 3.54 5.11 2015年2月8日 Podbeskidzie Cracovia酒店 2.88 3.16 2.41 2015年8月1日 維斯拉 瓦 3.13 3.18 2.26 01.08.2015 Lechi一個 Pogon 1.76 3.45 4.54 2015年7月31日 皮亞斯特 GornikZ 2.45 3.18 2.82 2015年7月31日 GornikL GornikZ 2.45 3.07 2.89 27.07.2015 Jagiellonia Termalica 2.04 3.27 3.53 2015年7月26日 萊吉亞 Podbeskidzie 1.29 4.97 9.69 2015年7月26日 Pogon Slask 2.31 3.19 3.02 2015年7月26日 赫 Lechia 1.93 3.32 3.82 2015年7月25日 Zaglebie 科羅納 1.81 3.33 4.43 2015年7月25日 Cracovia酒店 維斯拉 2.19 3.23 3.22 2015年7月24日 魯赫 皮亞斯特 2.50 3.09 2.83 24.07。2015皮亞斯特 Termalica 1 0 2.47 3.13 2.83 2015年7月20日冠Jagiellonia 2.31 3.25 2.96 2015年7月19日西里西亞萊吉亞 1 4 3.16 3.18 2.23 2015年7月19日 萊赫 Pogon 1.49 3.87 6.63 2015年7月18日的運動GornikL 2.25 3.12 3.19 2015年7月18日ZaglebiePodbeskydí 1.87 3.32 4.16 2015年7月18日 Lechia Cracovia酒店0 1 1.91 3.28 3.98 2015年7月17日 維斯拉 GornikZ 1.92 3.35 3.86 2015年7月17日 投注賠率 服務的合作提供了  與 OddsPortal.com

這是目標文件的一個例子:

西里西亞; Termalica; 2; 0; 1.67; 3.54; 5.11; 2015年2月8日 Podbeskydí; Cracovia酒店,0,1; 2.88; 3.16; 2.41; 2015年8月1日 維斯拉;瓦; 2; 0; 3.13; 3.18; 2.26 ; 2015年8月1日 Lechia; Pogon; 1:1; 1.76; 3.45; 4.54; 2015年7月31日 皮亞斯特; GornikZ; 3; 2; 2.45; 3.18; 2.82; 2015年7月31日 GornikL; GornikZ,2,1,2.45 ; 3.07; 2.89; 2015年7月27日 Jagiellonia; Termalica; 2; 0; 2.04; 3.27; 3.53; 2015年7月26日 萊吉亞;Podbeskydí,5,0; 1.29; 4.97; 9.69; 2015年7月26日 Pogon;西里西亞; 1 ,1; 2.31; 3.19; 3.02; 2015年7月26日 瓦,Lechia; 2; 1; 1.93; 3.32; 3.82; 2015年7月25日 凹部和冠,0,2; 1.81; 3.33; 4.43; 2015年7月25日 Cracovia酒店;維斯拉,1,1; 2.19; 3.23; 3.22; 2015年7月24日 運動;皮亞斯特; 2; 0; 2.50; 3.09; 2.83; 2015年7月24日 皮雅斯特; Termalica,1,0; 2.47; 3.13; 2.83;二零一五年七月二十零日 冠; Jagiellonia; 3; 2; 2.31; 3.25; 2.96; 2015年7月19日 西里西亞;萊吉亞; 1; 4; 3.16; 3.18; 2.23 ; 2015年7月19日 瓦,Pogon,1,2; 1.49; 3.87; 6.63; 2015年7月18日 運動; GornikL; 0; 2; 2.25; 3.12; 3.19; 2015年7月18日 凹部和Podbeskydí,1,1,1.87 ; 3.32; 4.16; 2015年7月18日 Lechia; Cracovia酒店,0,1; 1.91; 3.28; 3.98; 2015年7月17日 維斯拉; GornikZ; 1:1; 1.92; 3.35; 3.86; 17.07。2015年

所以,我想那裏有字前行線「投注」

+0

任何樣品的輸入?預期產出? – Eser

+0

@Eser我更新了我的文章:) – Moncicci90

+0

你是否總是指望你的輸入文件的總行數可以被8整除?如果情況並非如此,那麼內部循環可能會嘗試讀取文件的結尾。 – eric1825

回答

0

你的問題太心不是那麼清楚它很難確切地知道你想停下來,但這樣的事情可能會工作.. ..

StreamReader Read2; 

    Read2 = File.OpenText("save" + campionatoselezTxt.Text + "bex.txt"); 
    StreamWriter Write2 = File.CreateText("read" + campionatoselezTxt.Text + "bex.txt"); 


    while (!Read2.EndOfStream) 
    { 

     string NewLine = ""; 
     for (int K = 0; K < 8; K++) 
     { 
      if (K != 0) 
       NewLine = NewLine + ";" + Read2.ReadLine(); 
      else 
       NewLine = Read2.ReadLine();    
     } 

     if(NewLine.Contains("Specific Word")) 
       break; 

     Write2.WriteLine(NewLine); 
    } 

    Read2.Close(); 
    Write2.Close(); 
+0

完美!謝謝! :) – Moncicci90

0

我想你可以有這條線的問題,如果你發現流在八行之前結束。

NewLine = NewLine + ";" + Read2.ReadLine(); 

我做了一些更改代碼,測試和適應,如果你想:

using (StreamReader read2 = File.OpenText("save" + campionatoselezTxt.Text + "bex.txt")) 
{ 
    using (StreamWriter write2 = File.CreateText("read" + campionatoselezTxt.Text + "bex.txt")) 
    { 
     int k = 0; 
     string newLine = string.Empty; 

     while (!read2.EndOfStream) 
     { 
      if (k == 8) 
      { 
       write2.WriteLine(newLine); 
       k = 0; 
       newLine = string.Empty; 
      } 

      newLine = string.IsNullOrEmpty(newLine) ? read2.ReadLine() : newLine + ";" + read2.ReadLine(); 
      k++; 

      if (newLine.Contains("Betting")) 
      { 
       write2.WriteLine(newLine.Substring(0, newLine.IndexOf("Betting"))); 
       break; 
      } 
     } 
    } 
} 
相關問題