VB.NET实现删除文本文件中目标单词之前的所有行
VB.NET实现保留目标行及后续行的解决方案
你的代码逻辑存在问题,input.Contains("{MyWord}")返回的是布尔值,VB会自动将True转为1、False转为0,所以那个For循环根本无法实现“跳过目标行之前所有内容”的需求。
正确的思路是用一个开关变量控制是否开始写入内容:
- 初始时开关关闭,跳过所有读取到的行
- 当读到包含目标单词的行时,打开开关,同时把当前行写入字符串构建器
- 开关打开后,后续所有行都直接写入
修正后的代码如下:
' 定义目标单词 Dim targetWord As String = "{MyWord}" ' 用于存储保留的内容 Dim builder As New StringBuilder() ' 开关变量,标记是否开始写入内容 Dim shouldWrite As Boolean = False Using reader As New IO.StreamReader(fileName) While Not reader.EndOfStream() Dim input As String = reader.ReadLine() ' 检查当前行是否包含目标单词,是则打开开关 If input.Contains(targetWord) Then shouldWrite = True End If ' 开关打开时,写入当前行 If shouldWrite Then builder.AppendLine(input) End If End While End Using ' 最后可以将builder的内容写入新文件或者其他处理 ' IO.File.WriteAllText("新文件路径.txt", builder.ToString())
代码说明
shouldWrite变量:初始为False,确保目标行之前的所有行都被跳过- 当检测到包含目标单词的行时,立即打开开关,同时该行会被写入(满足你“保留包含目标单词的行及之后所有行”的需求)
- 后续所有行只要开关打开就会被写入,无需额外判断
内容的提问来源于stack exchange,提问作者Lord45
相关产品推荐
相关产品推荐

