关于我在vb中遇到的问题的一个简单问题。
我需要创建一个数组,然后遍历一个字符串,只在字符串值不存在的情况下将其添加到数组中,以生成一个唯一值数组。
我遇到的问题是使用array.length操作 - 在一个数组上,我无法检索数组长度(0),因此我无法将数组重新定义为数组长度(必须是数组长度为数组从0开始索引,使我能够将新值添加到数组,然后继续循环,直到检查完所有值以查看它们是否存在于数组中(使用contains)且值仅包含独特的价值..
我几个小时都在咬我的头:)
由于 马丁
答案 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)
也许这会激发您的循环解决方案。