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

如何提取字符串中[]内的内容?代码存在异常行为

提取字符串中[]内容的异常修复方案

你的代码出现异常的核心原因是:没有对[和]的位置有效性做检查。当字符串里找不到[/],或者]出现在[前面时,IndexOf会返回-1,这时候计算出来的起始位置或长度会是负数,调用Substring就会触发参数错误。哪怕是你例子里的合法字符串,一旦遇到格式不规范的行(比如只有[没有]),同样会出问题。

下面给你两种实用的改进方案:

方案一:基于原代码增加合法性校验

在提取子串前先确认括号的位置是否合法,避免无效计算:

For Each a As String In CType(TabControl1.SelectedTab.Controls.Item(0), RichTextBox).Text.Split(System.Environment.NewLine())
    If a.Contains("print ") Then
        Dim sData As String = a.Substring(6)
        Dim openIdx As Integer = sData.IndexOf("[")
        Dim closeIdx As Integer = sData.IndexOf("]")
        
        ' 先检查括号是否存在且顺序正确
        If openIdx <> -1 AndAlso closeIdx <> -1 AndAlso closeIdx > openIdx Then
            Dim startPos As Integer = openIdx + 1 ' 跳过左括号
            Dim contentLength As Integer = closeIdx - startPos
            Dim sData1 As String = sData.Substring(startPos, contentLength)
            Console.WriteLine(sData1)
        Else
            ' 可选:处理格式错误的情况
            Console.WriteLine($"该行「{a}」格式无效,未找到合法的[]对")
        End If
    End If
Next

方案二:用正则表达式更高效可靠

正则表达式可以精准匹配[]包裹的内容,即使字符串后面有额外干扰字符(比如你例子里的" pri...")也能轻松提取,还能处理更复杂的场景:

Imports System.Text.RegularExpressions

For Each a As String In CType(TabControl1.SelectedTab.Controls.Item(0), RichTextBox).Text.Split(System.Environment.NewLine())
    If a.Contains("print ") Then
        Dim sData As String = a.Substring(6)
        ' 正则匹配:捕获[和]之间的所有非]字符
        Dim matchResult As Match = Regex.Match(sData, "\[([^\]]*)\]")
        
        If matchResult.Success Then
            Dim extractedContent As String = matchResult.Groups(1).Value
            Console.WriteLine(extractedContent)
        Else
            Console.WriteLine($"未从「{sData}」中提取到有效内容")
        End If
    End If
Next

这里的正则\[([^\]]*)\]逻辑很简单:

  • \[:匹配转义后的左括号[(因为[在正则里是特殊符号)
  • ([^\]]*):捕获组,匹配任意**不是右括号]**的字符(*表示允许0个或多个)
  • \]:匹配转义后的右括号]

这种方式不仅能处理你当前的场景,还能兼容比如print [Hello] [World]这种多组括号的情况(如果需要提取所有组,把Match换成Matches即可)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:39:57