You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用VB.NET删除Word试题中选项与下一题之间的解析内容

实现方案

你之前的代码仅做了Explanation关键词的提取,要实现批量删除解析的需求,核心是锁定两个边界:上一题的最后一个选项、下一题的QUESTION NO开头标记,删除两个边界中间的所有内容即可,完整实现代码如下:

Imports Word = Microsoft.Office.Interop.Word
Imports System.Text.RegularExpressions

Module WordQuestionCleaner
    Sub Main()
        Try
            Dim objWordApp As Word.Application = Nothing
            Dim objDoc As Word.Document = Nothing
            ' 匹配试题开头的正则:QUESTION NO: 加数字
            Dim questionStartRegex As New Regex("^QUESTION NO: \d+", RegexOptions.IgnoreCase)
            ' 匹配选项的正则:大写字母+英文点+空格开头
            Dim optionRegex As New Regex("^[A-Z]\. ")
            ' 状态标记:是否处于需要删除的解析区间
            Dim isInExplanationArea As Boolean = False

            objWordApp = New Word.Application()
            If objWordApp IsNot Nothing Then
                objWordApp.Visible = False
                ' 此处替换为你的源文件路径,建议处理前先备份原文件
                objDoc = objWordApp.Documents.Open("E:\Sabbah\PMI SP Files\PMI-SP Questions.doc")
            End If

            If objDoc IsNot Nothing Then
                ' 倒序遍历段落,避免删除段落导致的索引错乱漏删
                For i As Integer = objDoc.Paragraphs.Count To 1 Step -1
                    Dim p As Word.Paragraph = objDoc.Paragraphs(i)
                    Dim paraText As String = p.Range.Text.Trim()

                    ' 匹配到下一题开头,结束解析区间标记
                    If questionStartRegex.IsMatch(paraText) Then
                        isInExplanationArea = False
                        Continue For
                    End If

                    ' 匹配到选项,开启解析区间标记(后续内容直到下一题都是解析)
                    If optionRegex.IsMatch(paraText) Then
                        isInExplanationArea = True
                        Continue For
                    End If

                    ' 处于解析区间的内容直接删除
                    If isInExplanationArea Then
                        p.Range.Delete()
                    End If
                Next

                ' 可替换为SaveAs2方法另存为新文件,避免覆盖原文件
                objDoc.Save()
                objDoc.Close()
                objWordApp.Quit()
                MessageBox.Show("解析内容已批量删除完成")
            End If
        Catch ex As Exception
            MessageBox.Show("处理出错:" & ex.Message)
        End Try
    End Sub
End Module

适配调整说明

  • 如果你的文档选项是小写字母开头,可以把正则里的[A-Z]改成[A-Za-z]适配
  • 如果试题开头的标记格式有变化,可以自行调整questionStartRegex的正则规则匹配实际内容

内容的提问来源于stack exchange,提问作者Mohammed Sabbah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:57:03