Hallo an alle.
Ich habe ein kleines Problem. Ich versuche seit geraumer Zeit, Strings in denen Aufrufe von Dateien stehen mehr oder weniger zu parsen.
Genauer gesagt, ich möchte den Dateinamen von den Parametern trennen.
Aus
c:\test\programm1.exe -a -c -c:\test
soll z.B.
c:\test\programm1.exe
und
-a -c -c:\test
werden.
An der Problematik hänge ich mich völlig auf. Gerade folgende Sonderfälle bringen mich an den Rand der Verzweiflung:
Bsp.: programm1.exe -a -c -c:\test
Bsp.: c:\meine dateien\test.exe -a -c
Ich habe mich in der Klassenbibliothek totgesucht aber nichts gefunden, was mir das erleichtern könnte und mein Code zu dem Thema ist vermute ich mal viel zu kompliziert und dazu fehlerträchtig. Vielleicht geht sowas mit regulären Ausdrücken aber die sind mir noch sehr schleierhaft.
Vielleicht kann mir ja einer von euch weiterhelfen.
Vielen Dank schonmal.
Wenn die Dateiendung bei der ausfühbaren Datei immer angegeben ist, suchst du einfach nach dem ersten Leerzeichen nach dem ersten Punkt und schon haste die Stelle wo du die Strings splitten kannst. 🙂 Oder gibts noch mehr Sonderfälle?
Baka wa shinanakya naoranai.
Mein XING Profil.
schau dir mal Substring() und IndexOf() an und ich würde das "-" nehmen
Wir Arbeiten eigendlich nicht wir nehmen nur das geld
Vielen Dank für die Kommentare.
Original von talla
Wenn die Dateiendung bei der ausfühbaren Datei immer angegeben ist, suchst du einfach nach dem ersten Leerzeichen nach dem ersten Punkt und schon haste die Stelle wo du die Strings splitten kannst. 🙂 Oder gibts noch mehr Sonderfälle?
Sorry, die Variante kann natürlich auch vorkommen. Das zu überprüfen reicht also leider nicht. 🙁
Original von S.H.-Teichhof
schau dir mal Substring() und IndexOf() an und ich würde das "-" nehmen
Das Problem ist, daß ich die Aufrufe nicht baue. Das Programm analysiert alle Aufrufe, die bei Rechnerstart stattfinden, da kann alles mögliche passieren, ob es nun /, - oder gar Parameter ohne Einleitung sind, z.B.:
C:\test.exe D:\test.txt
Die können dann natürlich auch noch gemixt sein. X(
Dann hilfts wohl nicht🙂
Erstmal alle Fälle die auftreten können zusammenzutragen, für jeden Fall ne Vorgehensweise zum Trennen entwickeln(nur mal gedanklich, noch nicht an den Code denken) , schaun ob sich Fälle nicht gegenseitig beeinflussen, bzw. ausschließen. Und dann müsste es ein leichtes sein die einzelnen Fälle abzuarbeiten und zu implementieren.
Baka wa shinanakya naoranai.
Mein XING Profil.
Hallo Das Schaf,
nur mal so am Rande. Du kannst nicht alle genannten Fälle sinnvoll interpretieren. In "c:\meine dateien\test.exe -a -c" ist einfach nicht klar, ob das Programm "c:\meine" mit dem Dateiparameter "dateien\test.exe" gemeint ist oder das Programm "c:\meine dateien\test.exe" ohne Dateiparameter.
Man muss also eine Festlegung treffen wie z.B.: es wird bei jedem Leerzeichen getrennt, außer wenn es zwischen Anführungsstrichen steht.
herbivore
Original von herbivore
Hallo Das Schaf,nur mal so am Rande. Du kannst nicht alle genannten Fälle sinnvoll interpretieren. In "c:\meine dateien\test.exe -a -c" ist einfach nicht klar, ob das Programm "c:\meine" mit dem Dateiparameter "dateien\test.exe" gemeint ist oder das Programm "c:\meine dateien\test.exe" ohne Dateiparameter.
Man muss also eine Festlegung treffen wie z.B.: es wird bei jedem Leerzeichen getrennt, außer wenn es zwischen Anführungsstrichen steht.
herbivore
Danke, das habe ich mittlerweile auch befürchtet. Ich werde versuchen, das Problem auf die häufigsten Fälle einzudämmen. Anders wird es sonst wohl leider nix. 🙁
Aber vielen Dank für Eure Hilfe. 👍