VB.NET实现仅替换文本文件中指定ID的[newtext]/[endtext]块内内容
解决方案
实现思路
用正则表达式精准匹配指定ID对应的[newtext]和[endtext]包裹的块,仅替换块中间的内容,不会影响其他ID的标记块。
完整修改后代码
' 必要命名空间,需放在代码文件顶部 Imports System.IO Imports System.Text.RegularExpressions ' 核心业务逻辑 Dim targetId As String = TextBox1.Text ' 输入要修改的ID,例如103 Dim newContent As String = TextBox2.Text ' 输入对应ID块要替换的新内容 Dim filePath As String = Path.Combine(My.Application.Info.DirectoryPath, "Data.txt") Dim originalText As String = File.ReadAllText(filePath) ' 正则精准定位指定ID的标记块中间区域 Dim pattern As String = $"(?<=\[newtext\]{Regex.Escape(targetId)}\r?\n)[\s\S]*?(?=\r?\n\[endtext\]{Regex.Escape(targetId)})" Dim updatedText As String = Regex.Replace(originalText, pattern, newContent) File.WriteAllText(filePath, updatedText)
代码说明
- 正则采用正向预查、反向预查定位边界,只会修改指定ID块的内容,其余ID的标记块会完整保留
- 用
Path.Combine拼接路径,规避不同环境路径分隔符不兼容的问题 Regex.Escape自动处理ID中可能存在的特殊字符,避免正则匹配异常
内容的提问来源于stack exchange,提问作者user16526006
相关产品推荐
相关产品推荐

