Visual Basic中的数组创建和填充问题

时间:2012-03-17 02:01:16

标签: vb.net

关于我在vb中遇到的问题的一个简单问题。

我需要创建一个数组,然后遍历一个字符串,只在字符串值不存在的情况下将其添加到数组中,以生成一个唯一值数组。

我遇到的问题是使用array.length操作 - 在一个数组上,我无法检索数组长度(0),因此我无法将数组重新定义为数组长度(必须是数组长度为数组从0开始索引,使我能够将新值添加到数组,然后继续循环,直到检查完所有值以查看它们是否存在于数组中(使用contains)且值仅包含独特的价值..

我几个小时都在咬我的头:)

由于 马丁

2 个答案:

答案 0 :(得分:1)

我必须假设你正在使用VB.Net,所以我会相应地回答。 你真正想要的答案是:

Public Function GetUniqueChars(text As String) As Char()
        Dim uniqueChars() As Char

        ReDim uniqueChars(0)
        If String.IsNullOrEmpty(text) Then Return uniqueChars

        uniqueChars(0) = text(0)

        For Each c In text.Substring(1)
            If Not uniqueChars.Contains(c) Then
                ReDim Preserve uniqueChars(uniqueChars.Length)
                uniqueChars(uniqueChars.Length - 1) = c
            End If
        Next

        Return uniqueChars

    End Function

但是,从Net 3.5开始,您可以使用LINQ将此功能缩减为一行:

uniqueChars = text.Distinct().ToArray

答案 1 :(得分:0)

自从我上次在VB6中编程以来,这已经是(一次是我最喜欢的语言)。话虽这么说,我记得使用UBound()找到数组的长度,如:

iLength = UBound(myArray)

我还记得使用该数字重新声明我的数组以使用类似的东西添加另一个值(即动态数组):

ReDim Preserve myArray(iLength)

也许这会激发您的循环解决方案。