Forum: PC-Programmierung vb.net / RegEx: Zeilen zwischen Werten zählen


von threadinger (Gast)


Lesenswert?

Hi, habe ein kleines Anliegen...

ich hab eine .txt-Datei die in eine RichTextBox eingelesen wird.
Die sieht so aus
1
--DOC--
2
0
3
1
4
2
5
3
6
--DOC--

Nun möchte zählen, wie viele Zeilen es zwischen den beiden "--DOC--" 
gibt und komme nicht so recht voran, ich habs mit RegEx versucht aber 
das klappt nicht wie ichs mir vorstelle. Gibt es eine einfache Lösung? 
Lines "counten" an sich ist kein Problem, aber zwischen dem --DOC-- ... 
da komme ich nicht weiter.

Danke

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Wenn --DOC--  immer am Anfang und Ende steht, könnte man
doch auch die Windows-API SendMessage verwenden.

$00BA  : em_GetLineCount oder 0x00BA je nach Sprache

count = SendMessage(HandledesRichedit, $00BA, 0, 0)

Jetzt ziehst du nur noch 2 von count ab (wegen 1. und letzter Zeile,
also den 2 --DOC--). Da braucht es noch nicht mal eine Schleife.

: Bearbeitet durch User
von imonbln (Gast)


Lesenswert?

Ich kann leider kein Vb.net, aber ein generischer Ansatz, lese die 
Richbox Zeile für Zeile ein. Das Internet empfiehlt hierfür das Split 
Kommando. Wenn dann die aktuelle Zeile "--DOC--" ist fang an zu zählen 
und wenn sie es wieder ist, höre auf.

Mal kurz aus dem Internet zusammen geklaut, ungefähr so:
1
    Dim arr() As String
2
    Dim i As Integer
3
    Dim counter As Integer
4
    Dim countDoc As Boolean
5
6
    counter = 0
7
    countDoc = False  
8
    arr = Split(RichTextBox1.Text, vbCrLf)
9
    For i = 0 To UBound(arr)
10
        If arr(i).Contains("--DOC--") Then
11
           countDoc = not countDoc
12
        ElseIf countDoc = True Then
13
           counter = counter + 1
14
        End If 
15
    Next

Beitrag #7261494 wurde vom Autor gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.