VB.net遍历维数未知的多维数组的办法
2006-12-02 13:20
330 查看
当一个数组是多维数组。并且每维的上下标都不定的情况下。我们如何去遍历整个数组呢?我不知道大家都有什么奇招妙法。我昨天亲自写了一个程序,用于遍历一个未知的数组。只知道他是一个数组,并且里面存储的是字符串。程序很简单。就是首先获得 数组的 秩,然后获得每维的长度和上下标,以及总长度。 再放到循环中处理。
本程序默认数组中的数据类型为System.String。当然如果我们想把程序写的更加完美的话。在处理数据的时候,可以通过 GetType()方法获得它的数据类型。然后再做不同的处理即可。
代码如下:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim a(,,) As String = {{{"NorthSnow", "塞北的雪"}, {"CSDN", "中国最大的开发者网络"}}, {{"CRC", "长春轨道客车股份有限公司"}, {"BEC", "剑桥商务英语"}}, {{"Net_Lover", "孟子E章"}, {"China", "中华人民共和国"}}}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim i As Integer
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim j, k, l, m, n As Integer
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim qq(,) As Integer
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim pp() As Integer
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim rr(,) As Integer
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
ReDim rr(a.Rank - 1, 1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
l = 1 '返回数组的总长度, 也可以通过 Length 属性 或者 LongLength 返回
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For i = 0 To a.Rank - 1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
l = l * (a.GetUpperBound(i) - a.GetLowerBound(0) + 1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
rr(i, 0) = l
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
rr(i, 1) = a.GetUpperBound(i) - a.GetLowerBound(0) + 1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
ReDim qq(l - 1, a.Rank - 1) '返回存储
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
ReDim pp(a.Rank - 1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For i = 0 To a.Rank - 1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
k = 0
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
k = 0
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For m = 1 To rr(i, 0) / rr(i, 1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For j = a.GetLowerBound(i) To a.GetUpperBound(i)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For n = 1 To l / rr(i, 0)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
qq(k, i) = j
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
k = k + 1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim str1 As New System.Text.StringBuilder
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim arrTemp() As Integer
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
ReDim arrTemp(a.Rank - 1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For i = 0 To l - 1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For j = 0 To a.Rank - 1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
arrTemp(j) = qq(i, j)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str1.Append(a.GetValue(arrTemp))
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str1.Append(vbCrLf)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
MsgBox(str1.ToString)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
本程序默认数组中的数据类型为System.String。当然如果我们想把程序写的更加完美的话。在处理数据的时候,可以通过 GetType()方法获得它的数据类型。然后再做不同的处理即可。
代码如下:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim a(,,) As String = {{{"NorthSnow", "塞北的雪"}, {"CSDN", "中国最大的开发者网络"}}, {{"CRC", "长春轨道客车股份有限公司"}, {"BEC", "剑桥商务英语"}}, {{"Net_Lover", "孟子E章"}, {"China", "中华人民共和国"}}}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim i As Integer
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim j, k, l, m, n As Integer
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim qq(,) As Integer
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim pp() As Integer
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim rr(,) As Integer
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
ReDim rr(a.Rank - 1, 1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
l = 1 '返回数组的总长度, 也可以通过 Length 属性 或者 LongLength 返回
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For i = 0 To a.Rank - 1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
l = l * (a.GetUpperBound(i) - a.GetLowerBound(0) + 1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
rr(i, 0) = l
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
rr(i, 1) = a.GetUpperBound(i) - a.GetLowerBound(0) + 1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
ReDim qq(l - 1, a.Rank - 1) '返回存储
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
ReDim pp(a.Rank - 1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For i = 0 To a.Rank - 1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
k = 0
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
k = 0
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For m = 1 To rr(i, 0) / rr(i, 1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For j = a.GetLowerBound(i) To a.GetUpperBound(i)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For n = 1 To l / rr(i, 0)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
qq(k, i) = j
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
k = k + 1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim str1 As New System.Text.StringBuilder
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Dim arrTemp() As Integer
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
ReDim arrTemp(a.Rank - 1)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For i = 0 To l - 1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
For j = 0 To a.Rank - 1
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
arrTemp(j) = qq(i, j)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str1.Append(a.GetValue(arrTemp))
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str1.Append(vbCrLf)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Next
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
MsgBox(str1.ToString)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
相关文章推荐
- VB.net 字节数组转字符串的办法
- VB.NET 数组的定义 动态使用 多维数组
- 使用java编写的一个遍历未知维数的数组函数
- VB.NET中获取数组的秩(维数)和维度的上限
- VB.NET 数组的定义 动态使用 多维数组
- 在VB.NET中对于多维数组相关基础知识
- VB.NET 数组的定义 动态使用 多维数组
- VB.NET 数组的定义 动态使用 多维数组
- 如何遍历维数和各维上限未定的多维数组
- VB.NET 数组的定义 动态使用 多维数组
- [VB.NET]往数组尾部加一项的方法是什么方法?
- net.sf.json.JSONArray 中两个JSONArray数组的叠加办法
- [转]VB.NET和C#.NET中控件数组的建立
- 错误137(net::ERR_NAME_RESOLUTION_FAILED):未知错误的解决办法
- PHP中多维数组的foreach遍历示例
- vb.net 数组参与SQL语句的查询范例
- php遍历多维数组改变数组的值
- VB.net 结构体的遍历
- php多维数组遍历
- javascript自己实现多维数组遍历