Top-Themen

Aktuelle Themen (A bis Z)

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, 1252 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
Batch & Shell
Buchstaben in Zahlen umwandeln
gelöst Frage von KawoosheBatch & Shell8 Kommentare

Hallo, ich wollte mal fragen ob man Buchstaben (groß und klein schreibung egal) in ihre dazugehörige zahl umwandeln kann( ...

Microsoft Office
Zahlen in Buchstaben automatisch umwandeln!
gelöst Frage von wingetMicrosoft Office8 Kommentare

Hallo zusammen, ich brauche für eine Datei (Zahlungsformular in Excel) in einer Zeile z.B. A1 die Zahlen und in ...

PHP
Textfeld nur bestimmte Buchstaben und Zahlen zulassen
gelöst Frage von vServerPHP5 Kommentare

Hi, wie kann ich hier nur bestimmte Zeichen wie A-Z, a-z, 0-9 erlauben und keine Sonderzeichen wie - ( ...

VB for Applications
In einer Textzeile (String) die Anzahl eines vorgekommenen Buchstaben zählen
gelöst Frage von windelterroristVB for Applications5 Kommentare

Hallo! Ich bin noch neu im Bereich VBA und bin mir deshalb noch etwas unsicher in dieser Programmiersprache. Würde ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 1 MinuteVerschlüsselung & Zertifikate

//Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, gilt das besonders ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 11 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 12 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...