Sonntag, 8. Dezember 2013

TM-SmartString: Trim, LTrim, RTrim

Mit diesem Beitrag wird das Klassenmodul TM-SmartString um drei Funktionen zur Bereinigung von Strings erweitert: Trim, LTrim und RTrim.

Eigenschaft: Trim
Diese Eigenschaft gibt den enthaltenen Text ohne führende und nachfolgende Leerzeichen zurück.

Implementierung
Die Implementierung erfolgt mit folgendem Code:
1:  Public Property Get Trim()  
2:    Trim = VBA.Trim$(m_String)  
3:  End Property  
In der zweiten Zeile wird die Funktion Trim$ verwendet, um das Ergebnis zu ermitteln. Der Name der Funktion Trim$ wird zusätzlich mit dem Namen der zu verwendenden Bibliothek qualifiziert; in diesem Fall "VBA". So wird sichergestellt, dass die Funktion Trim$ aus der Bibliothek VBA verwendet wird.

Bisheriger Code
Bisher wurde folgender Code für das Entfernen führender und nachfolgender Leerzeichen aus einem String verwendet:
1:  Dim myString As String  
2:  myString = " Hello World "  
3:  MsgBox Trim$(myString)  
In der dritten Zeile wird die Funktion Trim$ aufgerufen. Dieser wird als Parameter der Name der String-Variable übergeben.

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.Trim  
In der vierten Zeile wird die Eigenschaft Trim abgerufen.

Eigenschaft: LTrim
Diese Eigenschaft gibt den enthaltenen Text ohne führende Leerzeichen zurück.

Implementierung
Die Implementierung erfolgt mit folgendem Code:
1:  Public Property Get LTrim()  
2:    LTrim = VBA.LTrim$(m_String)  
3:  End Property  
In der zweiten Zeile wird die Funktion LTrim$ verwendet, um das Ergebnis zu ermitteln. Der Name der Funktion LTrim$ wird zusätzlich mit dem Namen der zu verwendenden Bibliothek qualifiziert; in diesem Fall "VBA". So wird sichergestellt, dass die Funktion LTrim$ aus der Bibliothek VBA verwendet wird.

Bisheriger Code
Bisher wurde folgender Code für das Entfernen führender Leerzeichen aus einem String verwendet:
1:  Dim myString As String  
2:  myString = " Hello World "  
3:  MsgBox LTrim$(myString)  
In der dritten Zeile wird die Funktion LTrim$ aufgerufen. Dieser wird als Parameter der Name der String-Variable übergeben.

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.LTrim  
In der vierten Zeile wird die Eigenschaft LTrim abgerufen.

Eigenschaft: RTrim
Diese Eigenschaft gibt den enthaltenen Text ohne nachfolgende Leerzeichen zurück.

Implementierung
Die Implementierung erfolgt mit folgendem Code:
1:  Public Property Get RTrim()  
2:    RTrim = VBA.RTrim$(m_String)  
3:  End Property  
In der zweiten Zeile wird die Funktion RTrim$ verwendet, um das Ergebnis zu ermitteln. Der Name der Funktion RTrim$ wird zusätzlich mit dem Namen der zu verwendenden Bibliothek qualifiziert; in diesem Fall "VBA". So wird sichergestellt, dass die Funktion RTrim$ aus der Bibliothek VBA verwendet wird.

Bisheriger Code
Bisher wurde folgender Code für das Entfernen nachfolgender Leerzeichen aus einem String verwendet:
1:  Dim myString As String  
2:  myString = " Hello World "  
3:  MsgBox RTrim$(myString)  
In der dritten Zeile wird die Funktion RTrim$ aufgerufen. Dieser wird als Parameter der Name der String-Variable übergeben.

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.RTrim  
In der vierten Zeile wird die Eigenschaft RTrim abgerufen.


Die nächsten Schritte sind gemacht. Das Klassenmodul enthält jetzt drei Funktionen zur Bereinigung von Strings. Die nächsten Erweiterungen des Klassenmoduls sind auf dem Weg.

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

1 Kommentar:

Paul Rohorzka hat gesagt…

Hallo Thomas!
Die Idee deiner TM-SmartTypes finde ich sehr gut.
Was bei Verwendung von Hilfsklassen in VBA jedoch abschreckend sein kann, ist der zusätzliche Code für die Deklaration, Instanziierung und Initialisierung. Das sieht man im Vergleich bisher/künftig auch schön in deinen Posts zu TM-SmartString. Oft ist in solchen Fällen eine Factory-Methode zusammen einem With-Block eine mögliche Abhilfe.

Statt dem Code
Dim myString As TM_SmartString
Set myString = New TM_SmartString
myString = " Hello World "
MsgBox myString.LTrim
Set myString = Nothing

könnte man diesen Code schreiben:
With ANewTM.SmartString(" Hello World ")
MsgBox .LTrim
End With

Ich verwende dieses Pattern nun schon einige Zeit und finde es sehr praktisch. Es ist zwar ein bisschen mehr Aufwand für die Infrastruktur (Factory-Methoden), liefert aber dafür ein fertig initialisiertes Objekt mit, als Ersatz für einen parametrisierten Konstruktur.