Benutzer mit den meisten Antworten
Pfad löschen funktioniert nicht

Frage
-
Hallo,
ich habe folgenden Code
string LastPath = @""; string NextPath = @"" ; if (CheckThisCheckBox.IsChecked == true) { LastPath = ThisVersionPath1; NextPath = NextVersionPath1; } if (CheckNextCheckBox.IsChecked == true) { LastPath = ThisVersionPath2; NextPath = NextVersionPath2; } List<String> last = new List<string>(); List<String> next = new List<string>(); foreach (string LastIn in Directory.GetFiles(LastPath, "*.*", SearchOption.AllDirectories)) { string dateiname = Regex.Replace(LastIn, LastPath, string.Empty); last.Add(dateiname); }
Die Variablen NextVersioinPath1 und alle anderen sind werte zugewiesen ich bekomme auch in der foreachschleife die richtigen Pfade angezeigt allerdings wird bei regex.replace nicht der LastPfad weggelöscht. es kommt der komplette String Pfad in die Liste.
In LastIn sowie in LastPath stehen die richtigen Strings drinnen aber irgendwie replact er nicht.
Jemand eine Idee ???
danke
Cay
Antworten
-
Cay,
ok, Dein Problem liegt bei den Backslashes, da diese als escape character bei den RegEx benutzt werden. Formuliere es so und es funktioniert:
String a = @"c:\Test1\Test2\Aber\und\Dateiname"; String pattern = @"c:\\Test1\\Test2\\"; String x = System.Text.RegularExpressions.Regex.Replace(a, pattern, String.Empty);
Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/
Alle Antworten
-
Cay,
versuchst Du den Dateiname ohne Pfad zu erhalten ? Wenn ja, warum benutzt Du nicht einfach System.IO.Path.GetFileName(LastIn) ?
Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/ -
Hallo Cay,
wenn ich das richtig verstanden habe, willst Du nur die Dateinamen ohne den Pfad?
string Dateiname = System.IO.Path.GetFileName( LastIn );
Siehe dazu:
http://msdn.microsoft.com/de-de/library/system.io.path.getfilename.aspx
Alternativ kannst Du auch FileInfo Objekte per:
FileInfo[] files = new DirectoryInfo( "<Pfad>" ).GetFiles(); foreach( FileInfo file in files ) { last.Add( file.Name ); }
verwenden.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Dienstag, 23. April 2013 09:19
-
Hallo,
nein nicht ganz da ab
LastPath
noch weitere Unterordner kommen 2-3 Ebenen und die mit abgespeichert werden sollen.
Der Dateiname alleine reicht mir nicht.Ich muss allerdings mit Regex arbeiten da der Pfad bis zu den anderen Unterordner unterschiedlich sind
z.b.
c:\Test1\Test2\Aber\und\Dateiname
c:\Test1\Test3\Aber\und\Dateiname
deswegen muss alles bis zum Unterordner "Aber" weg.
grüße
Cay
- Bearbeitet joksch_c Dienstag, 23. April 2013 09:28
-
Cay,
ok, Dein Problem liegt bei den Backslashes, da diese als escape character bei den RegEx benutzt werden. Formuliere es so und es funktioniert:
String a = @"c:\Test1\Test2\Aber\und\Dateiname"; String pattern = @"c:\\Test1\\Test2\\"; String x = System.Text.RegularExpressions.Regex.Replace(a, pattern, String.Empty);
Hannes
If you have got questions about this, just ask.
In a perfect world,
users would never enter data in the wrong form,
files they choose to open would always exist
and code would never have bugs.
C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/