C#Streamreader添加新行

C#Streamreader添加新行,c#,line,add,streamreader,C#,Line,Add,Streamreader,我已经搜索过了,但是我遇到的每一个解决方案都涉及到regexwitch,它不是我的解决方案 我的问题很简单,我希望streamreader每次读取单词“ice”时都添加一行新行。请记住,streamreader将输入读取为一行 我的代码如下: using (StreamReader sr = new StreamReader(stream)) { VarrileKeeper.s = sr.ReadToEnd(); //Console.WriteLine(VarrileKeeper

我已经搜索过了,但是我遇到的每一个解决方案都涉及到
regex
witch,它不是我的解决方案

我的问题很简单,我希望streamreader每次读取单词“ice”时都添加一行新行。请记住,
streamreader
将输入读取为一行

我的代码如下:

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();
}
请尝试以下操作:

 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();
      }
}
请尝试以下操作:

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

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

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

希望有帮助

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

我宁愿使用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上是不加区分的,这意味着更复杂的单词也将被截断(例如威尼斯)。

使用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上是不加区分的,这意味着更复杂的单词也将被截断(例如威尼斯)。

尝试以下方法:

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

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

冰岛或其他包含ice字符的单词呢?您想更新文件还是以这种方式读取文件?您不能直接使用
Replace
<代码>VarrileKeeper.s=sr.ReadToEnd().Replace(“ice”,“ice”+Environment.NewLine)
我希望streamreader每次读取单词“ice”时都添加一行新行。
-您希望streamreader添加一行什么内容?对自己?它是一个读者:它只能阅读。注意:您的代码目前只检查了“ice”是否存在,而不是“每次”。。。事情就是这样;我不;如果您无法编辑输入或读取器,您希望这些换行符放在哪里?冰岛这个词或其他包含ice字符的词呢?您希望更新文件还是以这种方式读取它?您不能直接使用
替换
<代码>VarrileKeeper.s=sr.ReadToEnd().Replace(“ice”,“ice”+Environment.NewLine)
我希望streamreader每次读取单词“ice”时都添加一行新行。
-您希望streamreader添加一行什么内容?对自己?它是一个读者:它只能阅读。注意:您的代码目前只检查了“ice”是否存在,而不是“每次”。。。事情就是这样;我不;如果您无法编辑输入或读取器,您希望这些换行符放在哪里?这只会在末尾添加行尾。这只会在末尾添加行尾。答案很好,但可以不使用.txt而仍保留在字符串中吗?@patrickhoffman公平地说,可以简单地修复:
.Replace(“ice”,“ice\n”)
(或者你喜欢新行的任何定义)回答得很好,但是不使用.txt,它还能保持在字符串上吗?@patrickhoffman公平地说,它可以被简单地修复:
.Replace(“ice”,“ice\n”)
(或者你喜欢新行的任何定义)我无法理解人们在投票时将错误答案保留在0…你有我的投票Steve。我无法理解人们在投票时将错误答案保留在0…你有我的投票Steve。它做什么?将Varriekeeper.s替换为新版本,在每个“ice”后包含新行用新版本替换VarrileKeeper.s,在每个“ice”单词后包含新行。