Split string naar Array

Status
Niet open voor verdere reacties.

harolda1980

Gebruiker
Lid geworden
7 aug 2007
Berichten
488
Ik heb de split functie gebruik om een string op te breken. Nu zou ik alleen willen weten hoeveel array's erin mijn array zitten.

Heeft iemand daar een snelle methode voor?
 
ligt eraan wat je tussen de haakjes hebt gezet bij het aamaken van de array []
 
De split functie regelt dat, omdat de input niet afhankelijk is van een gelijkmatige string!
Dus de enne keer zitten er 5 in en de andere keer 15 of 11
 
Ik denk dat je wat duidelijker moet zijn over de opbouw van je array

normaliter check je het aantal waarden in een array dmv
Code:
(Ubound(MyArray) - lbound(MyArray)) + 1

als dat niet werkt voor jouw geval zul je wat meer moeten toelichten.
 
Laatst bewerkt:
Afhankelijk van of je Option Base 1 gebruikt; begint een Array met 0 of 1. LBound is dus altijd 0 of 1. Ubound(Array) is dus altijd het aantal 'rijen' als je Option Base 1 gebruikt, anders moet je er 1 bij optellen.
 
En om het plaatje compleet te maken :)
Alle array elementen doorlopen doe je met
Code:
For i = LBound(MyArray) To UBound(MyArray)
'Je code
Next i
zonder te weten of de array 0 of 1 based is en hoeveel elementen er in zitten :)
 
We breiden de array kennisbank nog even uit met het volgende:

Alléén als je niet expliciet de matrix dimensies declareert is de "lbound" 0 (of 1 met option base 1)

Code:
Dim myArray(12 To 16) As String
Debug.Print LBound(myArray) ' geeft 12
Debug.Print UBound(myArray) ' geeft 16

Overigens, of je nu wel of niet gebruik maakt van Option Base 1 (ik probeer het te vermijden), het is aan te raden om altijd de "lbound" te specificeren, Omdat dan op procedureniveau in te schatten is wat de werkelijke dimensies van je matrices zijn.
 
(Eventueel) een andere mogelijkheid is om het aantal 'delimiters' in jouw string te bepalen.
 
Hiermee kan je je array testen

Code:
Option Explicit

Sub Test()
Dim avarArray As Variant
avarArray = Array(1, 2, 3, Array(1, 2, 3, Array(1, 2, 3)))

'checkt alleen de bovenste array (returns 1)
Debug.Print "Sub array search: " & CountSubArrays(avarArray)
'checks for Recursive arrays in de opgegeven array (returns 2 )
Debug.Print "Recursive array search:" & CountArraysRecursive(avarArray)

End Sub

Private Function CountSubArrays(ByVal myArray As Variant) As Long
Dim i As Long

    For i = LBound(myArray) To UBound(myArray)
        If IsArray(myArray(i)) Then
            CountSubArrays = CountSubArrays + 1
        End If
    Next

End Function
Private Function CountArraysRecursive(ByVal myArray As Variant) As Long
Dim lngCount As Long
Dim i As Long

    For i = LBound(myArray) To UBound(myArray)
        If IsArray(myArray(i)) Then
            lngCount = lngCount + CountArraysRecursive(myArray(i)) + 1
        End If
    Next
    CountArraysRecursive = lngCount

End Function
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan