vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Variablen/Strings · String-Operationen   |   VB-Versionen: VB4, VB5, VB602.11.04
SplitString Parser mit Start- und End Delimiter

Gibt alle zwischen Start- und End-Delimiter befindlichen Strings in ein Array zurück.

Autor:   Thomas DemmlerBewertung:     [ Jetzt bewerten ]Views:  13.513 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

Funktionen zur Rückgabe einzelner String-Abschnitte, die durch ein Trennzeichen getrennt sind, gibt es ja verschiedene. Will man jedoch alles zwischen zwei verschiedenen Trennzeichen ermitteln, dann wird es karg. Nachfolgend eine Funktion, die das erledigt:

Public Function garrFormelParser(sFormel As String, _
  Optional sDelimStart As String = "[", _
  Optional sDelimEnd As String = "]") As Variant
 
  Dim sLink() As String
  Dim sFormelCut As String
  Dim lLinkStart As Long
  Dim lLinkEnde As Long
  Dim i As Long
 
  i = 1
  sFormelCut = sFormel
 
  ' erstes Auftreten des sDelimStart ermitteln
  lLinkStart = InStr(1, sFormelCut, sDelimStart)
  While lLinkStart > 0
    ' so lange weiter in sFormel suchen, bis sDelimStart nicht mehr auftritt
    ' erstes Auftreten des sDelimEnd ermitteln
    lLinkEnde = InStr(1, sFormelCut, sDelimEnd)
 
    ' Array-Dimensionierung vergrößern
    ReDim Preserve sLink(1 To i) As String
 
    ' String zwischen sDelimStart unf sDelimEnd in Array übergeben
    sLink(i) = Mid$(sFormelCut, lLinkStart + 1, (lLinkEnde - lLinkStart - 1))
    i =i  + 1
 
    ' ausgewerteten Teil der Ursprünglichen Formel abschneiden und nur mit
    ' dem Rest weiterarbeiten
    sFormelCut = Mid$(sFormelCut, lLinkEnde + 1)
 
    ' erstes Auftreten des sDelimStart ermitteln
    lLinkStart = InStr(1, sFormelCut, sDelimStart)
  Wend
  garrFormelParser = sLink
End Function

Eine Anwendung wäre das Parsen einer Formel zur weiteren Berechnung, die als Variablen Links zu Tabellenfeldern enthält - z.B. folgende Formel:

[DB:=UserDatenbank;Table:=Parameter;Key:=ParameterID = 201;Value:=Anzahl]*
[DB:=UserDatenbank;Table:=Parameter;Key:=ParameterID = 225;Value:=Breite]

Die Formel enthält also 2 Variablen, die jeweils auf einen anderen Datensatz in der Tabelle "Parameter" in der Datenbank "UserDatenbank" verweisen. Diese beiden Variablen müssen für die entgültige Berechnung der Formel geparst werden. Um das tun zu können, müssen sie jedoch erst einzeln aus dem String der Gesamt-Formel ermittelt werden - also:

Private Sub Command1_Click()
  Dim vArray As Variant
  Dim sFormel As String
 
  sFormel = "[DB:=UserDatenbank;Table:=Parameter;Key:=ParameterID = 201;Value:=Anzahl]*" & _
    "[DB:=UserDatenbank;Table:=Parameter;Key:=ParameterID = 225;Value:=Breite]"
 
  vArray = garrFormelParser(sFormel)
End Sub

Als Ergebnis erhält man ein Array mit allen in der Formel auftretenden Variablen, die in "[" und "]" eingefasst sind...

Viel Spaß damit.
 

Dieser Tipp wurde bereits 13.513 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel