Freitag, 30. Mai 2014

TM-SmartString: Split

In diesem Beitrag wird das Klassenmodul TM-SmartString um eine Eigenschaft erweitert, die es erlaubt, einen String an einem bestimmten Zeichen zu trennen und die einzelnen Werte als Array zurückzugeben: Split.

Eigenschaft: Split
Diese Eigenschaft trennt den String an einem bestimmten Zeichen und gibt die einzelnen Werte als Array zurück. Gleichzeitig können führenden und nachfolgende Leerzeichen entfernt werden.

Implementierung
Die Implementierung erfolgt mit folgendem Code:
1:  Public Property Get Split(Optional ByVal Delim As String = ",", _  
2:              Optional ByVal RemoveWhitespace As Boolean = True) As String()
3:    Dim strResult() As String  
4:    strResult = VBA.Split(m_String, Delim)  
5:    If RemoveWhitespace = True Then  
6:      Dim i As Long  
7:      For i = LBound(strResult) To UBound(strResult)  
8:        strResult(i) = VBA.Trim$(strResult(i))  
9:      Next i  
10:    End If  
11:    Split = strResult  
12:  End Property  
In der vierten Zeile wird der enthaltene String mit dem Befehl Split in ein Array verwandelt. Der Name der Funktion Split wird zusätzlich mit dem Namen der zu verwendenden Bibliothek qualifiziert; in diesem Fall "VBA". So wird sichergestellt, dass die Funktion Split aus der Bibliothek VBA verwendet wird. In der Zeile 7 werden bei Bedarf die Leerzeichen an den Rändern entfernt.

Bisheriger Code
Bisher war folgender Code notwendig, um einen String in ein Array zu verwandeln:
1:    Dim i As Long  
2:    Dim aStr As String  
3:    Dim chr() As String  
4:      
5:    aStr = "A, B, C, D, E, F, G"  
6:    
7:    chr = Split(aStr, ",")  
8:      
9:    For i = LBound(chr) To UBound(chr)  
10:      MsgBox Trim$(chr(i))  
11:    Next i  
In der Zeile 7 wird der String mit der Split Funktion in ein Array verwandelt. In der Zeile 10 werden überzählige Leerzeichen mit der Trim$-Funktion entfernt..

Künftiger Code
Bei Verwendung der Klasse TM_SmartString sieht der Code wie folgt aus:
1:    Dim i As Long  
2:    Dim myString As TM_SmartString  
3:    Dim chr() As String  
4:      
5:    Set myString = New TM_SmartString  
6:    myString = "A, B, C, D, E, F, G"  
7:    
8:    chr = myString.Split()  
9:      
10:    For i = LBound(chr) To UBound(chr)  
11:      MsgBox chr(i)  
12:    Next i  
In der achten Zeile wird die Eigenschaft Split abgerufen. Es muss kein Trennzeichen als Parameter übergeben werden. Das Komma ist dafür der Standardwert. Bei der Ausgabe der Elemente des Arrays ist keine Trim$-Funktion mehr notwendig.


Mit der Implementierung der Eigenschaft Split zeigt sich wieder einmal, dass man in einer selbst erstellten Klasse die Funktionen so bauen kann, wie man sie benötigt. In diesem Fall wird ein Standardtrennzeichen verwendet und führende und nachfolgende Leerzeichen werden automatisch entfernt. Bei Verwendung der Eigenschaft entsteht sauberer, übersichtlicher Code.

Die neue Version 1.25.02 steht (wie immer) auf meiner Webseite zum Download bereit.

Keine Kommentare: