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

如何将JavaScript嵌套数组转换为VB.NET嵌套数组?

解析JS格式数据到VB.NET的问题解决

原始JS数据

let sched = [
    ["Sunday", 9.30, 12.00, 15.30, 22.00],
    ["Monday", 8.30, 12.00, 15.30, 19.00],
    ["Tuesday", 8.30, 12.00, 15.30, 19.00],
    ["Wednesday", 8.30, 12.00, 15.30, 19.00],
    ["Thursday", 8.30, 12.00, 15.30, 19.00],
    ["Friday",],
    ["Saturday", 8.00, 13.00]];

现有处理代码

Dim splitLines = _hours.Replace("""", "").Replace(" ", "").Replace(vbCrLf, "").TrimStart("[").TrimEnd("]").Split("]")
Dim result = splitLines.Select(Function(x) x.Trim.Replace("""", "").Replace("[", "").Split(","c)).ToArray()

问题1:每个工作日索引0出现空值的解决

问题根源是Split("]")会生成空元素,比如处理后的字符串末尾残留空内容,导致split出无效空项。只需在处理前过滤掉空或纯空白的行,同时去掉单条数据split后产生的空元素:

Dim splitLines = _hours.Replace("""", "").Replace(" ", "").Replace(vbCrLf, "").TrimStart("[").TrimEnd("]").Split("]")
' 过滤空行
Dim validLines = splitLines.Where(Function(x) Not String.IsNullOrEmpty(x.Trim))
' 分割后再过滤空元素
Dim result = validLines.Select(Function(x) 
    x.Trim.Replace("[", "").Split(","c).Where(Function(item) Not String.IsNullOrEmpty(item)).ToArray()
).ToArray()

问题2:解析为简单类的简便方法

先定义对应的数据类,让数据结构更清晰:

Public Class ScheduleDay
    Public Property DayName As String
    Public Property Hours As List(Of Double)
End Class

然后修改处理逻辑,直接将数据映射为类实例:

Dim splitLines = _hours.Replace("""", "").Replace(" ", "").Replace(vbCrLf, "").TrimStart("[").TrimEnd("]").Split("]")
Dim scheduleList = splitLines.Where(Function(x) Not String.IsNullOrEmpty(x.Trim)).Select(Function(line)
    Dim parts = line.Trim.Replace("[", "").Split(","c).Where(Function(item) Not String.IsNullOrEmpty(item)).ToArray()
    If parts.Length = 0 Then Return Nothing
    
    Dim day = New ScheduleDay() With {
        .DayName = parts(0),
        .Hours = New List(Of Double)()
    }
    
    ' 从第二个元素开始转换为数值类型
    For i = 1 To parts.Length - 1
        If Double.TryParse(parts(i), Dim hour) Then
            day.Hours.Add(hour)
        End If
    Next
    Return day
End Function).Where(Function(d) d IsNot Nothing).ToList()

这样得到的对象列表比二维数组更易维护和调用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:23:12