VB.net遍历维数未知的多维数组的办法

来源:互联网 发布:伊戈达拉总决赛数据 编辑:程序博客网 时间:2024/05/01 14:11

当一个数组是多维数组。并且每维的上下标都不定的情况下。我们如何去遍历整个数组呢?我不知道大家都有什么奇招妙法。我昨天亲自写了一个程序,用于遍历一个未知的数组。只知道他是一个数组,并且里面存储的是字符串。程序很简单。就是首先获得 数组的 秩,然后获得每维的长度和上下标,以及总长度。 再放到循环中处理。

本程序默认数组中的数据类型为System.String。当然如果我们想把程序写的更加完美的话。在处理数据的时候,可以通过 GetType()方法获得它的数据类型。然后再做不同的处理即可。

代码如下:

        Dim a(,,) As String = {{{"NorthSnow""塞北的雪"}, {"CSDN""中国最大的开发者网络"}}, {{"CRC""长春轨道客车股份有限公司"}, {"BEC""剑桥商务英语"}}, {{"Net_Lover""孟子E章"}, {"China""中华人民共和国"}}}
        
Dim i As Integer
        
Dim j, k, l, m, n As Integer
        
Dim qq(,) As Integer
        
Dim pp() As Integer
        
Dim rr(,) As Integer
        
ReDim rr(a.Rank - 11)
        l 
= 1  '返回数组的总长度, 也可以通过 Length 属性 或者 LongLength  返回
        For i = 0 To a.Rank - 1
            l 
= l * (a.GetUpperBound(i) - a.GetLowerBound(0+ 1)
            rr(i, 
0= l
            rr(i, 
1= a.GetUpperBound(i) - a.GetLowerBound(0+ 1
        
Next

        
ReDim qq(l - 1, a.Rank - 1)   '返回存储
        ReDim pp(a.Rank - 1)
        
For i = 0 To a.Rank - 1
            k 
= 0
            k 
= 0
            
For m = 1 To rr(i, 0/ rr(i, 1)
                
For j = a.GetLowerBound(i) To a.GetUpperBound(i)
                    
For n = 1 To l / rr(i, 0)
                        qq(k, i) 
= j
                        k 
= k + 1
                    
Next
                
Next
            
Next
        
Next
        
Dim str1 As New System.Text.StringBuilder
        
Dim arrTemp() As Integer
        
ReDim arrTemp(a.Rank - 1)
        
For i = 0 To l - 1
            
For j = 0 To a.Rank - 1
                arrTemp(j) 
= qq(i, j)
            
Next
            str1.Append(a.GetValue(arrTemp))
            str1.Append(vbCrLf)
        
Next
        
MsgBox(str1.ToString)
    
 
原创粉丝点击