Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Unterscheiden zwischen Zahlen und Buchstaben

Frage Entwicklung VB for Applications

Mitglied: Calim3ro

Calim3ro (Level 1) - Jetzt verbinden

03.06.2014, aktualisiert 10.06.2014, 1218 Aufrufe, 6 Kommentare

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
Mitglied: colinardo
03.06.2014, aktualisiert um 17:07 Uhr
Hallo Nickpicker,
also wenn ich dich richtig verstanden habe etwa so:
01.
'Pfad der Datei 
02.
datei = "c:\DeineDatei.txt" 
03.
 
04.
Set fso = CreateObject("Scripting.Filesystemobject") 
05.
Set regex = CreateObject("vbscript.regexp") 
06.
 
07.
'nur Zahlen erlauben 
08.
regex.Pattern = "^\d+$" 
09.
 
10.
' Textfile in ein Array bestehend aus den einzelnen Zeilen einlesen 
11.
arrLines = Split(fso.OpenTextFile(datei).ReadAll(),vbNewLine,-1,1) 
12.
 
13.
'Teste die erste Zeile der Textdatei 
14.
If regex.Test(Left(arrLines(0),7)) Then 
15.
	MsgBox Left(arrLines(0),7) 
16.
End If 
17.
 
18.
'Teste die letzte Zeile der Textdatei 
19.
If regex.Test(Left(arrLines(UBound(arrLines)),7)) Then 
20.
	MsgBox Left(arrLines(UBound(arrLines)),7) 
21.
End If
Grüße Uwe
Bitte warten ..
Mitglied: Calim3ro
03.06.2014 um 16:39 Uhr
Hallo Uwe

Besten Dank für deine schnelle Rückmeldung.
Ich habe dein Skript kopiert und den Pfad zur Datei angepasst. Als String (MsgBox) erhalte ich jedoch jeweils nur "4567890", das erwartete "1234567" bleibt jedoch aus.

Bin leider kein Hirsch in VBS und konnte den Fehler nicht selber finden.
Kannst du dir das nochmal anschauen?

Gruss Nickpicker
Bitte warten ..
Mitglied: colinardo
03.06.2014, aktualisiert um 17:04 Uhr
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 ?
Bitte warten ..
Mitglied: Calim3ro
04.06.2014 um 13:55 Uhr
Sorry, da habe ich mich wohl etwas unklar ausgedrückt.

Es sollte in jedem Fall zwei Zahlen ausgegeben werden.
Und zwar von der ersten numerischen Zeile (Pos 1-7) und letzte Zeile, welche Position 1-7 aus numerischen Werten bestehen.

Im Beispiel müsse also 1234567 & 4567890 ausgegeben werden, da Salzburg 123456 auf Pos. 1-7 nicht rein numerisch ist.
Somit muss diese Zeile ignoriert werden und zur nächsten Zeile wechseln. Das gleiche von untern her, Hamburg 2345678 ist auf Pos 1-7 nicht numerisch, also sollte Pos. 1-7 der Zeile darüber ausgegeben werden, sofern diese numerisch ist.

Hoffe konnte die Unklarheiten beseitigen.
Gar nicht einfach, sowas zu erklären.

Besten Dank für deine Hilfe.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 04.06.2014, aktualisiert 10.06.2014
Hoffe konnte die Unklarheiten beseitigen.
Ah OK jetzt alles klar
01.
dim strWert1, strWert2, regex, fso, arrLines, datei 
02.
datei = "c:\DeineDatei.txt" 
03.
Set fso = CreateObject("Scripting.Filesystemobject") 
04.
Set regex = CreateObject("vbscript.regexp") 
05.
regex.Pattern = "^\d+$" 
06.
arrLines = Split(fso.OpenTextFile(datei).ReadAll(),vbNewLine,-1,1) 
07.
For i = 0 To UBound(arrLines) 
08.
	If regex.Test(Left(arrLines(i),7)) Then 
09.
		strWert1 = Left(arrLines(i),7) 
10.
		Exit For 
11.
	End If 
12.
Next 
13.
For i = UBound(arrLines) To 0 Step -1 
14.
	If regex.Test(Left(arrLines(i),7)) Then 
15.
		strWert2 = Left(arrLines(i),7) 
16.
		Exit For 
17.
	End If 
18.
Next 
19.
msgbox "Wert1: " & strWert1 & " / Wert2: " & strWert2  
20.
set fso = Nothing 
21.
set regex = Nothing
das ganze ließe sich auch noch weiter vereinfachen indem man komplett über ein einzelnes Regex-Pattern und Groupmatches geht (wollte aber das du das obige noch halbwegs verstehst):
01.
dim strWert1, strWert2, regex, fso, content, datei 
02.
datei = "c:\DeineDatei.txt" 
03.
Set fso = CreateObject("Scripting.Filesystemobject") 
04.
Set regex = CreateObject("vbscript.regexp") 
05.
regex.Multiline = True 
06.
regex.Pattern = "^(\d{7})[\s\S]*^(\d{7})" 
07.
content = fso.OpenTextFile(datei).ReadAll() 
08.
Set matches = regex.Execute(content) 
09.
If matches.Count > 0 Then 
10.
	strWert1 = matches(0).Submatches(0) 
11.
        strWert2 = matches(0).Submatches(1) 
12.
	MsgBox "Erster Wert: " & strWert1 & vbNewLine & "Zweiter Wert: " & strWert2 
13.
End If 
14.
set fso = Nothing 
15.
set regex = Nothing 
16.
set matches = Nothing
Grüße Uwe
Bitte warten ..
Mitglied: colinardo
LÖSUNG 10.06.2014, aktualisiert um 18:23 Uhr
Wenns das dann war, den Beitrag bitte noch als gelöst markieren, merci.

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Windows Tools
Adobe PDF Drucker Zahlen abgeschnitten (3)

Frage von lupita zum Thema Windows Tools ...

Exchange Server
Ersten Buchstaben einer Mail werden abgeschnitten (2)

Frage von Philipp.S zum Thema Exchange Server ...

Netzwerkmanagement
gelöst VPN zwischen zwei Routern ohne gleiche IP (17)

Frage von masta123 zum Thema Netzwerkmanagement ...

Neue Wissensbeiträge
Batch & Shell

Batch - ein paar Basics die man kennen sollte

Tipp von Pedant zum Thema Batch & Shell ...

Microsoft

Restrictor: Profi-Schutz für jedes Window

(6)

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft Office
Saubere HTML aus Word-Dokument (16)

Frage von peterpa zum Thema Microsoft Office ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (15)

Frage von marshall75000 zum Thema Router & Routing ...

Hosting & Housing
gelöst Webserver bei WIX, aber DNS Server wo anders (9)

Frage von laster zum Thema Hosting & Housing ...