Ich versuche momentan ein Programm zu schreiben, welches Fehlerhafte bilder aus einer Sequenz herausfiltert und verschiebt bzw. löscht. Als basis für die Suche habe ich eine Liste, in welcher die Rendertasks (Bildnummer) stehen. somit hätte ich zum Beispiel das fehlerhafte Bild Rendering_0123 und in der liste würde 123 stehen. Das Problem dabei ist, dass wenn ich mit String.Contains nach 123 suche, auch das bild 1230 und das Bild 1123 gelöscht werden. je nach Sequenz werden allerdings unterschiedlich viele Nullen vorgereiht. Da sich das ganze aber auf andere Sequenzen anwenden lassen sollte, kann ich nicht einfach eine vorgegeben Anzahl von nullen vorreihen. Nun hätte ich den Ansatz beide Strings von hinten nach vorne zu vergleichen, da sich die Nummerierung immer am Ende des Dateinamens befindet. allerdings bin ich grad ziemlich planlos wie ich das am Besten anstellen sollte... mfg Michael
Michael schrieb: > Nun hätte ich den Ansatz beide Strings von hinten nach vorne zu > vergleichen, da sich die Nummerierung immer am Ende des Dateinamens > befindet. allerdings bin ich grad ziemlich planlos wie ich das am Besten > anstellen sollte... und warum nicht einfach die Zahl extrahieren? z.b. Regex. Oder alles löschen was ungleich einer Ziffer ist, dann als int wandeln.
ich würde so vorgehen: 1. Zahl herausschneiden:
1 | var startIndex = myString.IndexOf('_'); |
2 | var endIndex = myString.IndexOf('.'); |
3 | var numberString = myString.Substring(startIndex, endIndex - startIndex); |
2. Zahl in Int konvertieren:
1 | var number = Int32.Parse(numberString); |
(Achtung: mehr oder weniger C#-Pseudocode!)
Super Danke! Ich habs mit der Methode von Boris hinbekommen. Nun hab ich nur noch ein weiteres (eher kosmetisches) Problem. Wärhend der suchvorgang läuf hängt das Programm. wie kann ich dem nutzer am besten mitteilen, dass der suchvorgang gerade läuft? Ich habe leider bisher noch nichts derartiges programmiert und habe daher keinen Plan wie ich das umgehen kan... MfG Michael
Michael schrieb: > ? Ich habe leider bisher noch nichts derartiges > programmiert und habe daher keinen Plan wie ich das umgehen kan... .net bietet dafür einen Backgroundworker an. Dann blockier die GUI nicht und du kannst anzeigen was du willst.
Peter II schrieb: > .net bietet dafür einen Backgroundworker an. Dann blockier die GUI nicht > und du kannst anzeigen was du willst. Das wäre sinnvoll. Zusätzlich kannst du nach dem Start des Workers noch den Mauscursor auf "Sanduhr" einstellen, und ggf. den Start-Button disablen (damit er nicht noch mal gedrückt wird). Auch eine Fortschrittsanzeige oder Ähnliches machen sich sicherlich gut ;-)
Michael schrieb: > String.Contains Ein String.EndsWith hätte es auch getan Michael schrieb: > da sich die Nummerierung immer am Ende des Dateinamens > befindet.
Michael schrieb: > Da sich das ganze aber auf > andere Sequenzen anwenden lassen sollte, kann ich nicht einfach eine > vorgegeben Anzahl von nullen vorreihen. Wie meinst Du das? Du solltest ein ein-eindeutiges Format vorgeben. Gruß Kurt
Am besten/flexibelsten gehts wohl mit REGEX. Zum testen und üben kann ich folgende Website empfehlen: http://regexpal.com/
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.