|
Mit der Funktion Split können Sie ab Visual Basic 6 einen String zerlegen, der mehrere durch einen Trenn-String voneinander getrennte Teile enthält. Wenn Sie jedoch nicht alle Teile benötigen, sondern nur jeweils den ersten oder letzten Teil, wäre die Verwendung dieser Funktion (oder auch eines Ersatzes für VB-Versionen vor VB 6) zu (zeit)aufwändig. Hierfür genügt eine eigene Funktion, die den ersten bzw. letzten Teil ausliest und ihn gegebenenfalls einschließlich des Trenn-Strings entfernt.
Sie übergeben der Funktion GetStringPart den vorhandenen Gesamt-String und den Trenn-String. Im optionalen Parameter FromRight (Voreinstellung: False) legen Sie fest, ob der letzte Teil ausgelesen bzw. entfernt werden soll. Im letzten, ebenfalls optionalen Parameter StripPart legen Sie fest, ob der ausgelesen Teil entfernt werden soll, oder ob der übergebene String unangetastet bleiben soll (Voreinstellung: True).
Public Function GetStringPart(Str As String, Separator As String, _
Optional ByVal FromRight As Boolean, _
Optional ByVal StripPart As Boolean = True) As String
Dim nPos As Long
If Len(Str) Then
If FromRight Then
nPos = InStrRev(Str, Separator)
If nPos Then
GetStringPart = Mid$(Str, nPos + Len(Separator))
If StripPart Then
Str = Left$(Str, nPos - 1)
End If
Else
GetStringPart = Str
If StripPart Then
Str = ""
End If
End If
Else
nPos = InStr(Str, Separator)
If nPos Then
GetStringPart = Left$(Str, nPos - 1)
If StripPart Then
Str = Mid$(Str, nPos + Len(Separator))
End If
Else
GetStringPart = Str
If StripPart Then
Str = ""
End If
End If
End If
End If
End Function
Da die zur Bestimmung des ersten rechtsseitigen Vorkommens des Trenn-Strings benötigte Funktion InStrRev auch erst seit VB 6 zur Verfügung steht, können Sie unter VB 5 die folgende Funktion verwenden. Am besten belassen Sie diese im gleichen Standard-Modul und als "Private" deklariert, damit sie nicht mit einer gegebenenfalls anderweitig vorhanden Ersatz-Implementierung in Konflikt gerät:
Private Function InStrRev(Str As String, Separator As String) _
As Long
Dim l As Long
Dim nLenSeparator As Long
nLenSeparator = Len(Separator)
For l = Len(Str) To 1 Step -1
If Mid$(Str, l, nLenSeparator) = Separator Then
InStrRev = l
Exit Function
End If
Next 'l
End Function
Diese Funktion ist im zu diesem Artikel herunterladbaren Modul modGetStringPart.bas auskommentiert - unter VB 6 können Sie sie auch ganz löschen.
|