Donnerstag, 19. Juni 2014

TM-SmartString: SubStr, SubString

In diesem Beitrag wird das Klassenmodul TM-SmartString um zwei Eigenschaften erweitert, die jeweils einen Teil der Zeichenkette zurückgeben: SubStr und SubString.

Eigenschaft: SubStr
Diese Eigenschaft gibt einen Teil der enthaltenen Zeichenkette zurück. Als Parameter werden die Startposition und die Länge verwendet.

Implementierung
Die Implementierung erfolgt mit folgendem Code:
1:  Public Property Get SubStr(ByVal StartPos As Long, _
                      Optional ByVal Length As Variant)  
2:    If IsMissing(Length) Then  
3:      Length = Len(m_String) - StartPos + 1  
4:    End If  
5:    SubStr = VBA.Mid$(m_String, StartPos, Length)  
6:  End Property  
Der Parameter Length ist optional. Er wird bewusst vom Datentyp Variant deklariert. Nur so ist es in Zeile 2 möglich, mit der Funktion IsMissing zu prüfen, ob dieser Parameter übergeben wurde. Wenn der Parameter fehlt, wird die Länge von der Startposition bis zum Ende des Strings ermittelt. In Zeile 5 wird dann mit der Funktion Mid$ der gewünschte Teil der Zeichenkette ermittelt. Der Name der Funktion Mid$ wird zusätzlich mit dem Namen der zu verwendenden Bibliothek qualifiziert; in diesem Fall "VBA". So wird sichergestellt, dass die Funktion Mid$ aus der Bibliothek VBA verwendet wird.

Bisheriger Code
Bisher wurde folgender Code verwendet, um einen Teil einer Zeichenkette zu ermitteln:
1:  Dim myString As String  
2:  myString = "Hello World"  
3:  MsgBox Mid$(myString, 7)  
In der Zeilen 3 wird die Funktion Mid$ aufgerufen. Diese gibt den gewünschten Teil des Strings als Ergebnis zurück.

Künftiger Code
Bei Verwendung der Klasse TM_SmartString sieht der Code wie folgt aus:
1:  Dim myString As TM_SmartString  
2:  Set myString = New TM_SmartString  
3:  myString = "Hello World"  
4:  MsgBox myString.SubStr(7)  
In der vierten Zeile wird die Eigenschaft SubStr abgerufen. Als Parameter wird die Länge übergeben.

Eigenschaft: SubString
Diese Eigenschaft gibt einen Teil der enthaltenen Zeichenkette zurück. Als Parameter werden die Startposition und die Endposition verwendet.

Implementierung
Die Implementierung erfolgt mit folgendem Code:
1:  Public Property Get SubString(ByVal StartPos As Long, _
                         Optional ByVal EndPos As Variant)  
2:    Dim Length As Long  
3:    If IsMissing(EndPos) Then  
4:      EndPos = Len(m_String)  
5:    End If  
6:    Length = EndPos - StartPos + 1  
7:    SubString = VBA.Mid$(m_String, StartPos, Length)  
8:  End Property  
Der Parameter EndPos ist optional. Er wird bewusst vom Datentyp Variant deklariert. Nur so ist es in Zeile 3 möglich, mit der Funktion IsMissing zu prüfen, ob dieser Parameter übergeben wurde. Wenn der Parameter fehlt, wird als EndPos das Ende des Strings ermittelt. In Zeile 7 wird dann mit der Funktion Mid$ der gewünschte Teil der Zeichenkette ermittelt. Der Name der Funktion Mid$ wird zusätzlich mit dem Namen der zu verwendenden Bibliothek qualifiziert; in diesem Fall "VBA". So wird sichergestellt, dass die Funktion Mid$ aus der Bibliothek VBA verwendet wird.

Bisheriger Code
Bisher wurde folgender Code verwendet, um einen Teil einer Zeichenkette zu ermitteln:
1:  Dim myString As String  
2:  myString = "Hello World"  
3:  MsgBox Mid$(myString, 7)  
In der Zeilen 3 wird die Funktion Mid$ aufgerufen. Diese gibt den gewünschten Teil des Strings als Ergebnis zurück.

Künftiger Code
Bei Verwendung der Klasse TM_SmartString sieht der Code wie folgt aus:
1:  Dim myString As TM_SmartString  
2:  Set myString = New TM_SmartString  
3:  myString = "Hello World"  
4:  MsgBox myString.SubString(7)  
In der vierten Zeile wird die Eigenschaft SubString abgerufen. Als Parameter wird die Länge übergeben.


Mit diesen beiden neuen Eigenschaften adaptiert die Klasse TM-SmartString zwei Methoden, die aus anderen Sprachen wie z.B. Java, JavaScript oder VB.Net bekannt sind. Die Implementierung dieser beiden Eigenschaften zeigt, dass es leicht möglich ist, den selbst erstellten Datentyp TM-SmartString um genau die Eigenschaften und Methoden zu erweitern, die gewünscht werden.

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

Keine Kommentare: