Sonntag, 1. Dezember 2013

TM-SmartString: StartsWith, EndsWith

Mit diesem Beitrag wird das Klassenmodul TM-SmartString um zwei weitere nützliche Eigenschaften erweitert: StartsWith und EndsWith.

Eigenschaft: StartsWith
Diese Methode prüft, ob der enthaltene Text mit einer bestimmten Zeichenfolge beginnt.

Implementierung
Die Implementierung erfolgt mit folgendem Code:
1:  Public Property Get StartsWith(ByVal What As String) As Boolean  
2:    Dim Laenge As Long  
3:    Laenge = VBA.Len(What)  
4:    If (VBA.Left$(m_String, Laenge) = What) Then  
5:      StartsWith = True  
6:    Else  
7:      StartsWith = False  
8:    End If  
9:  End Property  
In der dritten Zeile wird die Länge des gesuchten Textes ermittelt. In der vierten Zeile wird mit dem Befehl Left$ der Beginn des Textes ermittelt und mit dem gesuchten Wert verglichen.

Bisheriger Code
Bisher erfolgte die Prüfung, ob ein String mit einem bestimmten Text beginnt, z.B. wie folgt:
1:  Dim myString As String  
2:  myString = "Hello World"  
3:  If (Left$(myString, 5) = "Hello") Then  
4:    MsgBox "Ja"  
5:  End If  
In der dritten Zeile wird der Beginn des Textes ermittelt und mit dem gesuchten Wert verglichen. Wichtig dabei ist, dass die im Befehl Left$ angegebene Länge mit der Länge des gesuchten Textes übereinstimmt.

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:  If (myString.StartsWith("Hello")) Then  
5:    MsgBox "Ja"  
6:  End If  
In der vierten Zeile wird die Eigenschaft StartsWith aufgerufen. Als Parameter wird der gesuchte Text übergeben.
Dieser Code ist leichter zu verstehen. Außerdem wird ein potentieller Fehler vermieden, da auf die Angabe der Länge des gesuchten Textes verzichtet werden kann.

Eigenschaft: EndsWith
Diese Methode prüft, ob der enthaltene Text mit einer bestimmten Zeichenfolge endet.

Implementierung
Die Implementierung erfolgt mit folgendem Code:
1:  Public Property Get EndsWith(ByVal What As String) As Boolean  
2:    Dim Laenge As Long  
3:    Laenge = VBA.Len(What)  
4:    If (VBA.Right$(m_String, Laenge) = What) Then  
5:      EndsWith = True  
6:    Else  
7:      EndsWith = False  
8:    End If  
9:  End Property  
In der dritten Zeile wird die Länge des gesuchten Textes ermittelt. In der vierten Zeile wird mit dem Befehl Right$ das Ende des Textes ermittelt und mit dem gesuchten Wert verglichen.

Bisheriger Code
Bisher erfolgte die Prüfung, ob ein String mit einem bestimmten Text endet, z.B. wie folgt:
1:  Dim myString As String  
2:  myString = "Hello World"  
3:  If (Right$(myString, 5) = "World") Then  
4:    MsgBox "Ja"  
5:  End If  
In der dritten Zeile wird das Ende des Textes ermittelt und mit dem gesuchten Wert verglichen. Wichtig dabei ist, dass die im Befehl Right$ angegebene Länge mit der Länge des gesuchten Textes übereinstimmt.

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:  If (myString.EndsWith("World")) Then  
5:    MsgBox "Ja"  
6:  End If  
In der vierten Zeile wird die Eigenschaft EndsWith aufgerufen. Als Parameter wird der gesuchte Text übergeben.
Dieser Code ist leichter zu verstehen. Außerdem wird ein potentieller Fehler vermieden, da auf die Angabe der Länge des gesuchten Textes verzichtet werden kann.


Mit der Implementierung der Eigenschaften StartsWith und EndsWiths werden erneut die Vorteile einer eigenen Klasse sichtbar: der entstehende Code ist wesentlich leichter lesbar. Die notwendige Logik wird in das Klassenmodul verlegt. Dort kann es zentral gepflegt werden.

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

Keine Kommentare: