String.Split()

  • VB.NET
  • .NET (FX) 4.0

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Gelöschter Benutzer.

    String.Split()

    Moin Leute,

    ich habe folgendes Problem:

    Der Inhalt einer Textbox sieht wie folgt aus:

    Einer der vielen Möglichkeiten

    Quellcode

    1. N:\8 - 3D Printing\2 - Dad\M16x1,5.stl
    2. N:\8 - 3D Printing\5 - Simon\HeadsetHolder\HeadsetHolder_V2.stl


    Im Prinzip ein Pfad aus beliebig vielen Unterordner

    Nun möchte ich nur den Dateiname herausfiltern, dazu benutze ich folgenden Code:

    VB.NET-Quellcode

    1. Dim Text As String = LocationTextBox.Text
    2. Dim splittedString() As String
    3. splittedString = Text.Split(CChar("\"))
    4. MessageBox.Show(splittedString(3))


    das Problem hierbei ist, dass es nur funzt wenn es immer die gleiche Ordnerstruktur ist, bedeutet hat der angegebene Pfad einen Unterorder mehr oder weniger wird mir nicht der Dateiname sondern z.b Ordnername angezeigt, abhängig hiervon:

    Quellcode

    1. MessageBox.Show(splittedString(3))


    Gibt es eine Möglichkeit "von hinten zu suchen"
    Sprich: suche die Textbox von hinten ab bis du auf ein "/" triffst und zeige mir was du bis dahin gefunden hast?7

    Grüß Kameo
    String splitten wie du es bereits machst und dann den letzten String im Array nutzen? Der dürfte ja den Dateinamen enthalten.

    Wie kommt denn der Pfad in die Textbox?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Kannst du nicht einfach

    VB.NET-Quellcode

    1. .Split("/"c).last
    machen? Damit hättest du immer den letzten Eintrag.
    Oder so

    VB.NET-Quellcode

    1. Dim path = "N:\8 - 3D Printing\5 - Simon\HeadsetHolder\HeadsetHolder_V2.stl"
    2. Dim filename = System.IO.Path.GetFileName(path)
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    VB1963 schrieb:

    Ich würde beides heranziehen und nichts mit String.Split machen...

    Genau, darauf wollte ich mit meiner Frage raus. Nicht das Pferd von hinten aufsatteln ;)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Der Text kommt per OpenFileDialog in die Textbox

    Quellcode

    1. ​.Split("/"c).last

    geht leider nicht: Der wert vom Typ String kann nicht in "1-Dimensionales Array von Typ String" konvertiert werden

    VB.NET-Quellcode

    1. ​Dim path = "N:\8 - 3D Printing\5 - Simon\HeadsetHolder\HeadsetHolder_V2.stl"
    2. Dim filename = System.IO.Path.GetFileName(path)


    Das hat wahre Wunder gewirkt, vielen Dank!
    Variante auf die ich raus wollte, als Alternative:

    Man hätte auch die gewählte Datei in ein (global deklariertes, je nach Struktur des Programms) FileInfo Objekt stecken können und so zwischenspeichern.

    In die Textbox kann man dann den Name schreiben, hat in der hinterhand aber noch den FullName zur späteren Verarbeitung, oder eben umgekehrt.

    Das hier "Dim filename = System.IO.Path.GetFileName(path)" geht natürlich auch, ist jedoch aus meiner Sicht ein unnötiger Zwischenschritt wenn man sich über oben stehende Variante bereits zu Beginn alle Infos zur Datei holen kann.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen