C#从文件中删除以特定单词开头的行

C#从文件中删除以特定单词开头的行,c#,file,file-io,io,windows-forms-designer,C#,File,File Io,Io,Windows Forms Designer,从文件中删除以C#中特定单词开头的行的有效且优雅的方法是什么?我知道如果行中的任何位置包含特定单词,如何删除该行,但删除以特定单词开头的行时遇到问题。谢谢 首先,我们应该定义“以一个特定的单词开头”的含义 若单词只是一个子字符串,那个么string.StartsWith就足够了 如果word是后续字母,那么我们可以尝试使用正则表达式: 代码。子字符串情况: using System.IO; using System.Linq; ... string fileName = @&qu

从文件中删除以C#中特定单词开头的行的有效且优雅的方法是什么?我知道如果行中的任何位置包含特定单词,如何删除该行,但删除以特定单词开头的行时遇到问题。谢谢

首先,我们应该定义“以一个特定的单词开头”的含义

  • 若单词只是一个子字符串,那个么
    string.StartsWith
    就足够了
  • 如果word是后续字母,那么我们可以尝试使用正则表达式:
代码。子字符串情况:

 using System.IO;
 using System.Linq;

 ...

 string fileName = @"c:\myFile.txt";

 File.WriteAllLines(fileName, File
   .ReadLines(fileName)
   .Where(line => !line.StartsWith(myWord))
   .ToArray());
正则表达式大小写:

 using System.IO;
 using System.Linq;
 using System.Text.RegularExpressions;

 ...

 string fileName = @"c:\myFile.txt";

 Regex regex = new Regex($@"^{Regex.Escape(myWord)}\b");

 File.WriteAllLines(fileName, File
   .ReadLines(fileName)
   .Where(line => !regex.IsMatch(line))
   .ToArray());

 

File.writeAllines(@“c:\MyChangedFile.txt”,File.ReadLines(@“c:\MyFile.txt”)。其中(line=>!line.StartsWith(myWord))
听起来像是在寻找str.StartsWith(“任意字符串”)方法。你们可以在这里看到一些微软的例子:谢谢你们!酷!谢谢你,德米特里@我不知道如何编程:请检查您在该文件中寻址(打开、读取或写入)的代码。似乎您还没有关闭
读卡器
/
写卡器
。因为当我的代码尝试读写文件时,文件没有正确关闭,所以在响应之前删除我的旧注释是例外。我明白了。我使用的是你在上面发布的旧评论,但是你发布的答案很好。所以现在我没有收到错误:
进程无法访问该文件,因为它正被另一个进程使用。
不再。似乎需要在末尾添加
.ToArray()
,或者删除
@
。不知道是哪一个修好了。谢谢你,德米特里@我不知道如何编程:
ToArray()
-如果写入同一个文件,则需要具体化(否则会出现异常)。我们读取文件,获取数组(文件现在已关闭),然后写入。如果您将
拖到array
上,您将在同一时刻开始读写同一个文件,这就是错误,谢谢@Dmitry Bychenko的澄清。很高兴知道!