C#从文件中删除以特定单词开头的行
从文件中删除以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
- 若单词只是一个子字符串,那个么
就足够了李>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的澄清。很高兴知道!