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

VBS String nach letztem Leerzeichen teilen

Frage Entwicklung Batch & Shell

Mitglied: citroendsvier

citroendsvier (Level 1) - Jetzt verbinden

17.01.2015, aktualisiert 11:57 Uhr, 962 Aufrufe, 8 Kommentare

Hallo zusammen,

ich habe in VBS eine Variable, die in etwa folgenden Inhalt enthält:
01.
Intel (TM) Core (TM) i5-3570K  @ 3.4 GHz 2098209,1
Jetzt möchte ich das ganze aufteilen in zwei Teile, einmal das Core i5 Zeug (ab Anfang), und einmal die Zahl am Ende. Da vorne aber auch ein anderes CPU Modell stehen könnte, ist die Zahl der Leerzeichen nicht festgelegt. Ich müsste also beim letzten Leerzeichen teilen.
Wie kann ich das anstellen?

Ach ja, die Länge der Zahl am Ende ist leider auch nicht fest...

Mit freundlichen Grüßen, V40
Mitglied: bastla
LÖSUNG 17.01.2015, aktualisiert um 11:57 Uhr
Hallo citroendsvier!

Sollte sich etwa so lösen lassen:
01.
S = "Intel (TM) Core (TM) i5-3570K  @ 3.4 GHz 2098209,1" 
02.
P = InStrRev(S, " ") 
03.
T1 = Left(S, P - 1) 
04.
T2 = Mid(S, P + 1)
Grüße
bastla
Bitte warten ..
Mitglied: 114757
LÖSUNG 17.01.2015, aktualisiert um 11:57 Uhr
01.
str = "Intel (TM) Core (TM) i5-3570K  @ 3.4 GHz 2098209,1" 
02.
strCPU = Left(str, InStrRev(str, " ",-1,vbTextCompare)-1) 
03.
strNumber = Mid(str,InStrRev(str, " ",-1,vbTextCompare)+1)
Gruß jodel32
Bitte warten ..
Mitglied: citroendsvier
17.01.2015 um 11:05 Uhr
Hallo Bastla,
danke für deine Antwort!

Ich kriege bei deiner Lösung zwar den CPU Namen korrekt, die Variable mit der Zahl ist aber etwas... hmm. In meiner Zahl steht "TM) Core (TM) ...." usw. bis Ende der Zahl. Liegt's vielleicht an mir?

@114757: Deine Variante teste ich gleich, dir auch danke!

Mit freundlichen Grüßen, V40
Bitte warten ..
Mitglied: 114757
17.01.2015, aktualisiert um 11:13 Uhr
Und mit Regex gehts auch so
01.
str = "Intel (TM) Core (TM) i5-3570K  @ 3.4 GHz 2098209,1" 
02.
Set regex = CreateObject("Vbscript.regexp") 
03.
regex.pattern = "(.*) (.*)$" 
04.
set matches = regex.Execute(str) 
05.
If matches.count > 0 Then 
06.
     strCPU = matches(0).Submatches(0) 
07.
     strCPU = matches(0).Submatches(1) 
08.
End if
Bitte warten ..
Mitglied: bastla
17.01.2015 um 11:18 Uhr
Hallo citroendsvier!
Ich kriege bei deiner Lösung zwar den CPU Namen korrekt, die Variable mit der Zahl ist aber etwas... hmm.
Das Problem ist schwer nachvollziehbar - in der Variablen P steht die Zeichenposition des letzten Leerzeichens, und diese wird bei der Zerlegung für beide Bestandteile verwendet.

Poste doch mal den von Dir vewendeten Code ...

Grüße
bastla
Bitte warten ..
Mitglied: citroendsvier
17.01.2015, aktualisiert um 11:57 Uhr
Das mach ich jetzt... ich blick selber nicht mehr durch

01.
Set File = FSO.OpenTextFile("Data.txt", ForReading, false) 
02.
Dim OtherCPU(9) 
03.
i = 0 
04.
while not File.AtEndOfStream and i < 10 
05.
	OtherCPU(i) = File.ReadLine 
06.
	i = i + 1 
07.
Wend 
08.
i = i - 1 
09.
Dim Laenge(15), SplittenCPU(10), SplittenPoints(10), P(20), S(20) 
10.
for a = 0 To i 
11.
	Laenge(a) = len(OtherCPU(a)) 
12.
	 
13.
	OtherCPU(a) = Mid(OtherCPU(a), 42) ' "Benutzer...mit dem" wegmachen 
14.
	Laenge(a) = len(OtherCPU(a)) 
15.
	OtherCPU(a) = Left(OtherCPU(a), Laenge(a)-16) 
16.
	 
17.
	P(a) = InStrRev(OtherCPU(A), " ") 
18.
	S(a) = InStr(OtherCPU(a), " ") 
19.
	SplittenCPU(a) = Left(OtherCPU(a), P(a) - 1) 
20.
	'SplittenPoints(a) = Right(OtherCPU(a), P(a) + 1) 
21.
	 
22.
	 
23.
	MsgBox OtherCPU(a) & vbCr & SplittenCPU(a) & "." & vbCr & SplittenPoints(a) & "." & vbCr & P(A) & vbCr & S(A) 
24.
Next
Bitte warten ..
Mitglied: bastla
LÖSUNG 17.01.2015, aktualisiert um 11:57 Uhr
Hallo citroendsvier!

Wenn Du dich entschließen kannst, anstelle von Right das (auch vom Kollegen jodel32 in seinem ersten Ansatz) vorgeschlagene Mid zu verwenden, sollte das auch bei Dir funktionieren ...

Grüße
bastla

P.S.: Zumindest für P und S wären einfache Variablen ausreichend ...
Bitte warten ..
Mitglied: citroendsvier
17.01.2015 um 11:57 Uhr
Vielen Dank! Jetzt klappts.

Ja, stimmt. Danke!
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Datenbanken
gelöst SQL - mehrere UPDATE-Anweisungen in einem String per vbs (4)

Frage von goodbytes zum Thema Datenbanken ...

PHP
gelöst Explode, split - String teilen und in Table mit for-schleife (4)

Frage von Protected zum Thema PHP ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...