none
Pfad löschen funktioniert nicht RRS feed

  • 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

    Dienstag, 23. April 2013 09:03

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/


    • Bearbeitet Heslacher Dienstag, 23. April 2013 09:44 naming
    • Als Antwort markiert joksch_c Dienstag, 23. April 2013 10:47
    Dienstag, 23. April 2013 09:43

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/

    Dienstag, 23. April 2013 09:11
  • 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


    Dienstag, 23. April 2013 09:15
    Moderator
  • 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
    Dienstag, 23. April 2013 09:25
  • 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/


    • Bearbeitet Heslacher Dienstag, 23. April 2013 09:44 naming
    • Als Antwort markiert joksch_c Dienstag, 23. April 2013 10:47
    Dienstag, 23. April 2013 09:43
  • Ha,

    danke an sowas muss mal also auch noch denken.

    danke

    Cay

    Dienstag, 23. April 2013 10:47