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

如何高效读取游戏代码文本文件并准确识别其中的代码块

游戏自定义数据块识别解决方案(VB.NET适配)

你给出的代码是Paradox类游戏的专用数据格式,针对识别需求有两种简单易实现的方案,不需要复杂的抽象逻辑:

方案1:轻量自定义识别逻辑(无第三方依赖)

核心逻辑只需要统计当前块的括号平衡,比全局统计括号的方法更简洁不易出错:

  • 逐行扫描文本,用正则匹配数字={格式的行,命中后将前面的数字存为当前块ID,标记块起点,初始化括号计数器为1
  • 后续扫描过程中遇到{计数器+1,遇到}计数器-1,计数器归0时即为当前块的结束位置,直接截取起点到结束位置的内容就是完整的顶级代码块

对应VB.NET核心实现代码:

Imports System.Text.RegularExpressions

Public Function ParseTopLevelBlocks(rawText As String) As Dictionary(Of Long, String)
    Dim blocks As New Dictionary(Of Long, String)()
    Dim currentId As Long = 0
    Dim blockStartIndex As Integer = -1
    Dim bracketCount As Integer = 0
    ' 匹配顶层ID格式的正则
    Dim topIdRegex As New Regex("(\d+)=\{")

    For i = 0 To rawText.Length - 1
        If bracketCount = 0 Then
            Dim match = topIdRegex.Match(rawText, i)
            If match.Success AndAlso match.Index = i Then
                currentId = Long.Parse(match.Groups(1).Value)
                blockStartIndex = i + match.Length
                bracketCount = 1
                i += match.Length - 1
            End If
        Else
            If rawText(i) = "{"c Then
                bracketCount += 1
            ElseIf rawText(i) = "}"c Then
                bracketCount -= 1
                If bracketCount = 0 Then
                    Dim blockContent = rawText.Substring(blockStartIndex, i - blockStartIndex).Trim()
                    blocks.Add(currentId, blockContent)
                End If
            End If
        End If
    Next
    Return blocks
End Function

方案2:转标准JSON直接解析(无需自行处理块识别)

只要对原始文本做简单的字符替换,就能转成标准JSON格式,直接用VB.NET内置的JSON库反序列化为对象,要导出电子表格直接取对应属性即可:

  1. 把所有"替换为标准双引号"
  2. 所有键=值格式的内容替换为"键":值,字符串类型的值自动补双引号
  3. 顶层的数字={修改为"数字":{
  4. 整个文本外层包裹一对大括号就是标准JSON,直接用System.Text.Json库反序列化即可

两种方案的时间复杂度都是O(n),处理大文件效率很高,逻辑简单易调试,不需要复杂的语法分析知识即可实现。

内容的提问来源于stack exchange,提问作者Reciter of Poetry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:15:05