2017-04-03 43 views
0

我已經搜索了這個,但我遇到的每個解決方案都涉及到regex女巫不是我的解決方案。C#Streamreader添加新行

我的問題很簡單,我希望streamreader每次讀到單詞「ice」時都會添加一個新行。請記住,streamreader正在將輸入讀取爲1行。

我的代碼如下:

using (StreamReader sr = new StreamReader(stream)) 
{ 
    VarrileKeeper.s = sr.ReadToEnd(); 
    //Console.WriteLine(VarrileKeeper.s); 
    if (VarrileKeeper.s.ToString().Contains("ice")) 
    { 
     //insert newline in string 
    } 
    sr.Close(); 
} 
+2

怎麼樣的詞_iceland_或別的東西containig字符_ice_? – Steve

+0

你想要*更新*文件或只讀*它以這種方式? –

+0

你不能只用'Replace'嗎? 'VarrileKeeper.s = sr.ReadToEnd()。Replace(「ice」,「ice」+ Environment.NewLine);' –

回答

0

嘗試以下操作:

using (StreamReader sr = new StreamReader(stream)) 
{ 
    { 
     VarrileKeeper.s = sr.ReadToEnd(); 
     //Console.WriteLine(VarrileKeeper.s); 
      if (VarrileKeeper.s.ToString().Contains("ice")) 
      { 
       VarrileKeeper.s = VarrileKeeper.s.Replace("ice", "ice" + System.Environment.NewLine); 
      } 

      sr.Close(); 
     } 
} 
+0

這將只在最後添加行結束。 –

+0

是啊謝謝..更換會工作 - 看到更新 –

+0

檢查現在..它會添加一條新的線冰.. –

2

看來,你的問題是非常簡單的(或者你沒有解釋你的問題背後的複雜性)。

我寧願使用有System.IO.File並以與string.replace解決您的問題:

string filename = "D:\\test.txt"; 
string output = System.IO.File.ReadAllText(filename).Replace("ice", "ice\n"); 
System.IO.File.WriteAllText(filename, output); 

希望這有助於!

+0

很好的答案,但可以做到不使用.txt,並仍然保持在一個字符串? – Taco2

+0

@PatrickHofman是公平的,它可以被簡單地修正:'.Replace(「ice」,「ice \ n」)'(或者換行符的任何定義都值得你喜歡) –

1

一些與string.Split和的string.join能達到自己的目標

string temp = File.ReadAllText("yourfilename"); 
var parts = temp.Split(new string[] {"ice"}, StringSplitOptions.None); 
VarrileKeeper.s = string.Join("ice"+ Environment.NewLine, parts); 

但請記住,這是對字符序列濫,這意味着也更復雜的單詞將被截斷(威尼斯例如)

+1

我無法理解人們在離開時提出錯誤的答案實際答案坐在0 ...你有我的投票史蒂夫。 –

0

試試這個:

VarrileKeeper.s = string.Join(string.Empty, varrileKeeper.s.Split(' ').Select(x => x == "ice" ? x += Environment.NewLine : x += " ")); 
+0

它是做什麼的? –

+0

取代VarrileKeeper。新版本包含每個「冰」字後的新行。 – daniell89