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

VB.NET代码提取文本中间数字至数组全为0的问题排查

问题分析与解决

核心问题定位

你遇到的数组输出全为0的问题,根源在读取文件的代码块里,有两个关键错误:

1. 未重置关键变量

每处理完一行后,sep会累计递增(比如第一行处理完sep变成2),后续行的字符判断中sep=1的条件永远不满足,导致没有往数组写入任何内容;同时counter2持续递增,超出数组索引范围,后面的元素保持初始赋值的0。

2. 数组赋值逻辑混乱

middleline(counter2) = (middleline(counter2) & Mid(line, counter1, 1))中,middleline初始被赋值为整数0,用字符串拼接符&会导致类型冲突,即便逻辑正确也可能出现异常。

修复后的读取代码块

把读取部分的代码修改为:

For counter = 1 To 20
    line = FileSystem.LineInput(1)
    ' 每处理一行重置分隔符计数和索引变量
    sep = 0
    Dim currentNum As String = ""
    For counter1 = 1 To Len(line)
        If Mid(line, counter1, 1) = ":" Then
            sep = sep + 1
        ElseIf sep = 1 Then
            ' 拼接第二组数字的每一位
            currentNum &= Mid(line, counter1, 1)
        End If
    Next
    ' 将拼接好的字符串转为整数存入对应数组位置
    middleline(counter) = CInt(currentNum)
Next

更高效的替代写法(可选)

用Split方法直接分割字符串,替换整个读取循环,代码更简洁:

For counter = 1 To 20
    line = FileSystem.LineInput(1)
    ' 按":"分割行内容,取第二个元素(索引从0开始)
    Dim parts() As String = line.Split(":"c)
    middleline(counter) = CInt(parts(1))
Next

其他注意事项

  • 随机数生成前建议调用Randomize()初始化,避免每次运行生成完全相同的随机序列。
  • FileSystem是VB6兼容的旧类,推荐改用.NET原生的File类(如File.WriteAllLines、File.ReadAllLines),更符合现代.NET开发规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:17:40