Trennzeichen finden

Mimas

Grünschnabel
Hallo liebe VB Gemeinde..

Ich habe folgendes Problem:

In einem Textfile sind verschiedene Werte in Tokens auf geteilt. das Trennzeichen kann dabei variabel sein.

Bsp:

3431;ffff;44ffuu;Hallo;eeee

Das funktioniert mit folgender Funktion auch wunderbar.

Code:
Function TextCleft(iSpaltenNr As Integer, sTextInhalt As String, sTrenner As String)

Dim sSpaltenInhalt As String
Dim iStartPos As Integer
Dim iEndPos As Integer
Dim iZähler As Integer
Dim iEingabe As Integer
Dim sTrennZeichen As String

sTrennZeichen = sTrenner

iEingabe = iSpaltenNr
iStartPos = 1
iZähler = 0


sSpaltenInhalt = sTextInhalt

'finde gewünschte Spalte
Do While iZähler < iSpaltenNr - 1
 
    delimPos = InStr(iStartPos, sTextInhalt, sTrennZeichen)
    
    If delimPos > 0 Then
        iZähler = iZähler + 1
        iStartPos = delimPos + 1
    Else
        MsgBox ("Ungültige Spalte!")
        End
    End If
Loop
    
      
iEndPos = InStr(iStartPos, sTextInhalt, sTrennZeichen)
    
    
If iEndPos > 0 Then
    iAusgabe = Mid(sTextInhalt, iStartPos, iEndPos - iStartPos)
Else
    iEndPos = Len(sTextInhalt)
    iAusgabe = Mid(sTextInhalt, iStartPos, iEndPos - iStartPos + 1)
End If
    
    
TextCleft = iAusgabe
    
End Function


Jetzt habe ich Textfiles vorliegen die diesen Aufbau haben.

1111;22222;33333;44444;"Hallo;zusammen;wie geht es euch?";55555

Das Trennzeichen ist das gleiche, nur will ich das er mir den Teil in dem die Anführungszeichen sind als nur eine Spalte ausgibt. "Hallo;zusammen;wie geht es euch?"

Hat vielleicht jemand einen Tip wie ich das realisieren kann?

mfg
Mimas
 
Mal nur so ne Frage, wieso verwendest du nicht die Split()-Funktion? Wenn du einen String mit Split trennst, kriegst du ein Array zurück, in dem die Elemente getrennt gelistet sind. Betr der Anführungszeichen kannst du vorher die Semikolons durch ein anderes Zeichen ersetzen und danach zurück ersetzen.


Der Doc!
 
Hallo,
hab mal versucht das ein wenig umzusetzen und gleich das Split vom Doc mit rein zumixen was im übrigen viel leichter ist, häts genauso gemacht.

Code:
Dim Stringdelim As String = ";"
Dim Textdelim As String = <Anführungsstriche> usw.
Dim Textstart As Integer
Dim Textende As Integer
Dim newstring As String
Dim finalstring As String
Dim final() As String

semistart = InStr(0, oriString, Textdelim, vbbinarycompare)
InStr(semistart, oristring, Textdelim, vbbinarycompare)
newstring = Replace(oristring, Stringdelim, " ", Textstart, -1, vbbinarycompare)
finalstring = Replace(oristring, " ", Stringdelim, Textende, -1, vbbinarycompare)
final = Split(finalstring, Stringdelim)

so sollte das vom Prinzip her schon passen, noch bissel ausführlich, aber man solls ja auch verstehen. Verbesserung wäre vllt noch das Anführungsstrichzeichen als Ascii zu implementieren, fällt mir grad noch so ein ;)
 
Hallo,

vielen dank euch beiden für eure Antwort.
Klar soll man es verstehen.. Möchte in keinem Fall einen fertigen Code haben..

Werde versuchen eure Tips umzusetzen.

mfg
Mimas
 
Zurück