Unterscheiden zwischen Zahlen und Buchstaben
Hallo zusammen
Ich habe eine Textdatei mit folgendem Inhalt:
Salzburg 123456
1234567 Berlin
2345678 Hamburg
3456789 Wien
4567890 Koeln
Hamburg 2345678
Nun möchte ich von der ersten und letzten Zeile die Position 1-7 als String ausgeben, sofern diese numerisch sind. (prüfung auf reine Zahlenfolge notwendig)
Wie müsste so ein Script in VB aussehen,? Besten Dank für eure Bemühungen schon mal im Voraus.
Bei Fragen einfach nachfragen.
Gruss Nickpicker
Ich habe eine Textdatei mit folgendem Inhalt:
Salzburg 123456
1234567 Berlin
2345678 Hamburg
3456789 Wien
4567890 Koeln
Hamburg 2345678
Nun möchte ich von der ersten und letzten Zeile die Position 1-7 als String ausgeben, sofern diese numerisch sind. (prüfung auf reine Zahlenfolge notwendig)
Wie müsste so ein Script in VB aussehen,? Besten Dank für eure Bemühungen schon mal im Voraus.
Bei Fragen einfach nachfragen.
Gruss Nickpicker
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 239913
Url: https://administrator.de/contentid/239913
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Nickpicker,
also wenn ich dich richtig verstanden habe etwa so:
Grüße Uwe
also wenn ich dich richtig verstanden habe etwa so:
'Pfad der Datei
datei = "c:\DeineDatei.txt"
Set fso = CreateObject("Scripting.Filesystemobject")
Set regex = CreateObject("vbscript.regexp")
'nur Zahlen erlauben
regex.Pattern = "^\d+$"
' Textfile in ein Array bestehend aus den einzelnen Zeilen einlesen
arrLines = Split(fso.OpenTextFile(datei).ReadAll(),vbNewLine,-1,1)
'Teste die erste Zeile der Textdatei
If regex.Test(Left(arrLines(0),7)) Then
MsgBox Left(arrLines(0),7)
End If
'Teste die letzte Zeile der Textdatei
If regex.Test(Left(arrLines(UBound(arrLines)),7)) Then
MsgBox Left(arrLines(UBound(arrLines)),7)
End If
Dann ist mir noch nicht klar was du willst, ich bin jetzt davon ausgegangen das wenn in Zeile 1 und der letzten Zeile z.B. anstatt des Wortes Salzburg oder Hamburg dort eine eine Zahlenfolge an der Zeichenposition 1-7 steht diese gemeldet werden soll... Also und diesem Beispiel garnichts ...
Salzburg 123456 < hier steht an Position 1-7 nur Text (keine Meldung)
1234567 Berlin
2345678 Hamburg
3456789 Wien
4567890 Koeln
Hamburg 2345678 < hier steht an Position 1-7 nur Text (keine Meldung)
in diesem Beispiel dann nur die 2345678
Salzburg 123456 < hier steht an Position 1-7 nur Text (keine Meldung)
1234567 Berlin
2345678 Hamburg
3456789 Wien
4567890 Koeln
2345678 blabla < hier steht an Position 1-7 eine Zahlenfolge also melde es
oder habe ich da was missverstanden ?
Salzburg 123456 < hier steht an Position 1-7 nur Text (keine Meldung)
1234567 Berlin
2345678 Hamburg
3456789 Wien
4567890 Koeln
Hamburg 2345678 < hier steht an Position 1-7 nur Text (keine Meldung)
in diesem Beispiel dann nur die 2345678
Salzburg 123456 < hier steht an Position 1-7 nur Text (keine Meldung)
1234567 Berlin
2345678 Hamburg
3456789 Wien
4567890 Koeln
2345678 blabla < hier steht an Position 1-7 eine Zahlenfolge also melde es
oder habe ich da was missverstanden ?
Hoffe konnte die Unklarheiten beseitigen.
Ah OK jetzt alles klar dim strWert1, strWert2, regex, fso, arrLines, datei
datei = "c:\DeineDatei.txt"
Set fso = CreateObject("Scripting.Filesystemobject")
Set regex = CreateObject("vbscript.regexp")
regex.Pattern = "^\d+$"
arrLines = Split(fso.OpenTextFile(datei).ReadAll(),vbNewLine,-1,1)
For i = 0 To UBound(arrLines)
If regex.Test(Left(arrLines(i),7)) Then
strWert1 = Left(arrLines(i),7)
Exit For
End If
Next
For i = UBound(arrLines) To 0 Step -1
If regex.Test(Left(arrLines(i),7)) Then
strWert2 = Left(arrLines(i),7)
Exit For
End If
Next
msgbox "Wert1: " & strWert1 & " / Wert2: " & strWert2
set fso = Nothing
set regex = Nothing
dim strWert1, strWert2, regex, fso, content, datei
datei = "c:\DeineDatei.txt"
Set fso = CreateObject("Scripting.Filesystemobject")
Set regex = CreateObject("vbscript.regexp")
regex.Multiline = True
regex.Pattern = "^(\d{7})[\s\S]*^(\d{7})"
content = fso.OpenTextFile(datei).ReadAll()
Set matches = regex.Execute(content)
If matches.Count > 0 Then
strWert1 = matches(0).Submatches(0)
strWert2 = matches(0).Submatches(1)
MsgBox "Erster Wert: " & strWert1 & vbNewLine & "Zweiter Wert: " & strWert2
End If
set fso = Nothing
set regex = Nothing
set matches = Nothing