Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除/替换streamreader字符串中的多个单词_C#_Asp.net_Streamreader - Fatal编程技术网

C# 删除/替换streamreader字符串中的多个单词

C# 删除/替换streamreader字符串中的多个单词,c#,asp.net,streamreader,C#,Asp.net,Streamreader,我正在打开和阅读一个文件。在这个文件中,我有几个关键字,我正在用不同的数据库内容替换它们 我的问题是:我需要能够从读取文件中删除特定文本。不止一个字。我试过的东西都不管用。.Remove方法在我处理完后返回一个空文件。这是我的阅读器代码 using (StreamReader reader = File.OpenText(@"\\GTU-FS02\ScanTests\RLA.htm")) { /* Commented out. TRIED, but does not w

我正在打开和阅读一个文件。在这个文件中,我有几个关键字,我正在用不同的数据库内容替换它们

我的问题是:我需要能够从读取文件中删除特定文本。不止一个字。我试过的东西都不管用。.Remove方法在我处理完后返回一个空文件。这是我的阅读器代码

   using (StreamReader reader = File.OpenText(@"\\GTU-FS02\ScanTests\RLA.htm"))
   {

      /* Commented out. TRIED, but does not work
      string fill = reader.ReadToEnd();
      string toRemove = "GTU Renewal Application (a shorter, simplified renewal form)";
      int i = fill.IndexOf(toRemove);
      if (i > 1)
      {
          fill.Remove(i, toRemove.Length);
      }    
      */
      string toRemove = "GTU Renewal Application (a shorter, simplified renewal form)";
      string fill = reader.ReadToEnd();
      string fill2 = null;
      if (fill.Contains(toRemove))
      {
           fill2 = reader.ReadToEnd().Replace("UWNAME", UW).Replace("ClientFName", subFname).Replace("ExDate", ExpDate).Replace("UwEmail", UwEmail(UW))
                     .Replace("CinSured", client).Replace("&", amperSand).Replace(toRemove, "");

      }
      line = fill2;
  }
你看到的是解决这个问题的不同尝试。我可以很容易地找到我要找的内容,但我不能删除或替换文本。文本总是一样的,所以我知道我可以这样寻找。有人知道怎么做吗?

第一种方法(注释的方法)不起作用,原因很简单,字符串是不可变的对象。Remove方法返回一个新字符串,不更改调用该方法的字符串。因此,您的代码应该简单地用

  line = fill.Remove(i, toRemove.Length);
第二种方法不起作用,因为您已经调用ReadToEnd两次。因此,第二次流已经到达文件的末尾,无法读取fill2变量中的任何内容。只需删除第一个ReadToEnd,然后获取Replace调用的结果。(同样,字符串是不可变的,所有字符串方法执行其任务并返回新字符串,而不更改调用字符串)

第一种方法(注释的方法)不起作用,原因很简单,字符串是不可变的对象。Remove方法返回一个新字符串,不更改调用该方法的字符串。因此,您的代码应该简单地用

  line = fill.Remove(i, toRemove.Length);
第二种方法不起作用,因为您已经调用ReadToEnd两次。因此,第二次流已经到达文件的末尾,无法读取fill2变量中的任何内容。只需删除第一个ReadToEnd,然后获取Replace调用的结果。(同样,字符串是不可变的,所有字符串方法执行其任务并返回新字符串,而不更改调用字符串)

我试过了,效果很好。

检查
reader.ReadToEnd()中的内容
他们回来了

不要用null初始化字符串,总是用
字符串初始化它。空的

我试过了,它能工作。

检查
reader.ReadToEnd()中的内容
他们回来了



不要用null初始化字符串,请始终用
“”
字符串初始化它。空的

是否要替换文件中的内容?e、 g.将更改保存回该文件?您是否尝试调试并找出fill2变量的值?我正在尝试删除分配给字符串变量“string toRemove”的文本。然后我将新文本写入电子邮件正文。您是否尝试替换文件中的内容?e、 g.将更改保存回该文件?您是否尝试调试并找出fill2变量的值?我正在尝试删除分配给字符串变量“string toRemove”的文本。然后,我将新文本写入电子邮件正文,删除代码中的最后一行,这使得替换内容有些无用。或者在if语句中将“行”改为fIL2。考虑使用<代码> StringBuilder。从字符串创建StringBuilder,然后调用Replace all。它将在StringBuilder的缓冲区内进行替换,而不是每次都创建一个新字符串。感谢您的帮助。不幸的是,这些也不起作用。我以前试过,但为了你的帮助,我又试过了。第二个方法返回空。。第一种会导致错误。我尝试了多种方法,但都不起作用。简单地删除预定义的文本集是如此困难,这似乎很愚蠢57。有没有例子说明如何实现这一点?我查了一下StringBuilder,但没有发现它的实现有什么不同。我想你需要启动调试器。在调用ReadToEnd的行上放置一个断点,并检查该方法的结果。然后一步一步地进行,观察变量中的变化。删除代码中的最后一行,这使得替换有些无用。或者在if语句中将“行”改为fIL2。考虑使用<代码> StringBuilder。从字符串创建StringBuilder,然后调用Replace all。它将在StringBuilder的缓冲区内进行替换,而不是每次都创建一个新字符串。感谢您的帮助。不幸的是,这些也不起作用。我以前试过,但为了你的帮助,我又试过了。第二个方法返回空。。第一种会导致错误。我尝试了多种方法,但都不起作用。简单地删除预定义的文本集是如此困难,这似乎很愚蠢57。有没有例子说明如何实现这一点?我查了一下StringBuilder,但没有发现它的实现有什么不同。我想你需要启动调试器。在调用ReadToEnd的行上放置一个断点,并检查该方法的结果。然后一步一步地进行,观察变量marcos中的变化,我已经尝试了“”和String.Empty。遗憾的是,无论我选择哪种方式,我都会得到同样的结果。在这个解决方案中,我可以获得与您相同的结果,但是当我从文件中读取内容而不是从实例化的字符串中读取内容时,会出现混乱。就像你的例子一样。我还没有弄明白这一部分。你能提供一个运行测试的示例文件吗?Marcos,我已经尝试了“”和String.Empty。遗憾的是,无论我选择哪种方式,我都会得到同样的结果。在这个解决方案中,我可以获得与您相同的结果,但是当我从文件中读取内容而不是从实例化的字符串中读取内容时,会出现混乱。就像你的例子一样。我还没有弄清楚那部分。你能提供一个运行测试的示例文件吗?