Kompliziertes Split

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von razzzer530i.

    Kompliziertes Split

    Hallo Leute!

    Splitten ist ja keine schwere Sache.

    Jetzt habe ich allerdings ein Problem.
    Ich suche in einer Serverstruktur nach Dateien die einen gewissen String enthalten.

    Jetzt hole ich mir den Pfad der Datei:

    VB.NET-Quellcode

    1. "\\SERVER\Topfolder\Subfolder\Subfolder1\Datei"

    Dieser Pfad variert natürlich.

    Problem bei der Geschichte ist, dass mein System in meinem verwendeten Programm für Ordner einen Friendly-Namen anlegt.
    Ich sehe:
    "Server\ARCHIVE\TESTORDNER\TO\datei.txt"
    Der echte Pfad sieht so aus:
    "Server\3\0\3A\datei.txt"

    Die Friendly Namen jedes Ordners lese ich aus und speichere sie in ein array.

    VB.NET-Quellcode

    1. "PFAD" &vbtab & "Friendlyname"


    Jetzt habe ich eine Datei in Pfad x und möchte den vollständigen Friendly Pfad angezeigt bekommen.

    Jemand eine Idee wie das geht?

    THX
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~
    Ich bin mir nicht sicher, ob ich verstanden habe, was du da machst.

    Für das , was ich verstanden habe, würde ich statt des Array

    VB.NET-Quellcode

    1. "PFAD" &vbtab & "Friendlyname"


    ein Dictionary

    VB.NET-Quellcode

    1. DIm myDict As New Dictionary(Of String, String)()
    2. myDict.Add("PFAD", "Friendlyname")
    3. If myDict.TryGetValue(realPath, friendlyPath) Then
    4. Debug.Print(friendlyPath)
    5. End If


    bauen.

    Meinst du das ?


    Nicht so ganz

    Also ich habe schon einen Lösungsansatz den ich hier gleich präsentieren werde aber habe folgendes Problem:

    ich habe

    einen festen string
    ein array mit x einträgen

    VB.NET-Quellcode

    1. dim Festerstring as String = "\\server\"
    2. dim array as String() = {"\0";"\2";"\4"} 'Weiß nicht ob man das so füllt und nicht vergessen die anzahl ist variabel.
    3. 'Jetzt möchte ich gerne:
    4. dim einzelpfade As New List(Of String)
    5. for each item in array
    6. einzelpfade.add(Festerstring & item)
    7. ' im zweiten durchlauf soll dann aber
    8. einzelpfade.add(Festerstring & item[0] & item[1]
    9. 'im dritten dann
    10. einzelpfade.add(Festerstring & item[0] & item[1] & item[2]
    11. 'usw.
    12. next


    Aber wie das ganze?




    Des Rätsels Lösung :

    VB.NET-Quellcode

    1. Dim ffn As String = "\\SERV\D\ar\3\7\0\0"
    2. Dim sdp As String = ffn.Substring(0, 22)
    3. Dim tss As String = ffn.Substring(22, ffn.Length - 22)
    4. Dim splitted As String() = tss.Split("\")
    5. Dim pfadteile As New List(Of String)
    6. Dim pfadteil As String = sdp
    7. For Each it In splitted
    8. pfadteil = pfadteil & "\" & it
    9. pfadteile.Add(pfadteil)
    10. ListBox1.Items.Add(pfadteil)
    11. Next


    Jetzt habe ich 4 Pfade. Diese Pfade sind in einerm Array gelistet und auch deren Friendly Name.

    Jetzt ist das Zusammensetzen des Pfades eine Kleinigkeit

    Für Jeden Pfadteil gibt es einen Friendlyname.
    Friendly-Pfad = friendlyname 1 + Friendlyname 2 usw :)
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „razzzer530i“ ()

    @razzzer530i Lass den Substring-Quatsch.
    Arbeite mit einer FileInfo-Instanz, setze da nen Haltepunkt drauf und sieh Dir die Properties an.

    VB.NET-Quellcode

    1. Dim fi = New IO.FileInfo("\\SERVER\Topfolder\Subfolder\Subfolder1\Datei.txt")
    Insbesondere sieh Dir auf die Property Parent der Property Directory an.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Klar damit arbeite ich sowieso, danke.

    Den Pfad herauszufinden ist ja kein Problem.
    Stell dir die Struktur so vor:

    In der Oberfläche(vorgegeben) sieht die Ordnerstrutkur meines Postfachs z.B. so aus:

    Mein Postfach
    Eingang>Ordner>MeinOrdner>MeinOrdnerunterordner>Eingang>iwas

    In Wirklichkeit sieht das so aus:

    \\SERVER\ARCHIVE>Archiv>0>0>1>2

    In jedem Ordner befindet sich eine .Dat datei in der Infos zur Mail verschlüsselt sind.
    Dazu befindet sich in jedem Ordner der einen Unterordner hat eine .Dir Datei, in der der Pfad des Subfolders und dessen Friendlyname steht.

    Daher muss ich also rumbasteln um den Friendly Name des Gesamtpfades zu finden.
    Habs aber so gelöst bekommen.

    Muss nur vorher alle Pfade(Alle dir dateien) auslesen , firendlyname herausfiltern, in ein array schreiben, den gesuchten Pfad nach jedem Folder Splitten, im array nach den einzelnen friendly namen suchen und dann zusammensetzen.

    Klappt spitze:)

    Unwahrscheinlich aber falls jemand ähnliche Probleme hat oder sich dafür Interessiert einfach melden.
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~