Autor Beitrag
ottto
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Do 18.06.15 15:56 
Hallo zusammen,
ich möchte aus einem Verzeichnis nur die .txt-Dateien angezeigt bekommen, deren Name 5 Zeichen lang ist und an der dritten Stelle eine 3 hat. Ich hab dazu 2 Testdateien (123.txt und 12345.txt).
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
                    DirectoryInfo verz1 = new DirectoryInfo(args[0]);
                    foreach (FileInfo f in verz1.GetFiles("??3??.txt"))
                    {
                        Console.WriteLine(f.Name);
                    }



Unerwarteter Weise werden mir beide Dateien angezeigt.
Eigentlich sollte das doch mit den Fragezeichen als Platzhalter passen, oder?
Kann mir Jemand einen Tipp geben?
Danke.
Gruß.
ottto
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 18.06.15 16:22 
Aus der Hilfe zu GetFiles

Zitat:
? (Fragezeichen) - Null oder ein Zeichen an dieser Position.


Edit : Ignorier das für den Moment. Die Hilfe wiederspricht sich da gerade :( Ich probiers lieber aus.

Edit2 : Beim Zitat hab ich den korrekten Teil erwischt ;) Da wirst du entweder direkt die WinApi verwenden müssen (FindFirstFile, FindNextFile bzw. die *Ex Versionen davon) oder nach dem Aufruf von GetFiles das Ergebnis in einem 2.ten Schritt so filtern müssen wie du es brauchst.

Edit3 : Wenn die Hilfe da recht hätte müßte "345.txt" gefunden werden. Wird aber nicht. Du solltest einfach mal von undefiniertem Verhalten ausgehen und das Filtern selbst machen.
Wenn ich mal versuche die Wiedersprüche in der MSDN aufzuarbeiten komme ich zu folgendem vermuteten Verhalten:
Führende und interne ? stehen für 1 belibieges Zeichen.
? am Ende (ohne Extension) des Suchmusters stehen für 0 oder 1 Zeichen.

Für diesen Beitrag haben gedankt: ottto
ottto Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Do 18.06.15 17:05 
ich filtere per Substring nach der 3 und frage die Länge des Dateinamen ab.
Damit funktioniert es jetzt.
Danke.
Gruß.
ottto