繁体   English   中英

C#Streamreader添加新行

[英]C# Streamreader add new line

我已经进行了搜索,但是遇到的每一个解决方案都涉及到regex女巫,这并不是我的解决方案。

我的问题很简单,我希望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();
}

您的问题似乎非常简单(或者您没有解释问题背后的复杂性)。

我宁愿使用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);

希望能有所帮助!

有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);

但请记住,这在字符序列ice上是不加区分的,这意味着也将截断更复杂的单词(例如,威尼斯)。

请尝试以下操作:

 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();
      }
}

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM