Split-Function

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Split-Function

    Guten Abend Leute :)

    Ich möchte gerne den Benutzernamen meines Computers in einer TextBox darstellen, jedoch gesplittet.
    Mein bisheriger Code ermöglicht es lediglich, den Zunamen meines Benutzers darzustellen.

    VB.NET-Quellcode

    1. Dim spl() As String
    2. spl = TextBox1.Text.Split(" ")
    3. TextBox1.Text = spl(1)


    ff. Format ist gewünscht:

    Für Karl-Heinz Mustermann
    -> K.Mustermann oder
    -> K.-H.Mustermann oder
    -> KA.-H.Mustermann oder

    Wie kann ich dies realisieren :?:
    Wenn du es mit split machen willst, dann musst du wohl mehrmals splitten. Vor- und Nachnamen kannst du erhalten, indem du jeweils beim Leerzeichen splittest. Das letzte Element des Arrays, ist dann der Nachname. Dann musst du alle anderen Elemente des Arrays nochmal mit dem "-" splitten. Jetzt setzt du dein End-String so zusammen, dass du von den einzelnen Vornamen/Vornamen-Teilen immer nur den ersten Buchstaben nimmst, dahinter ein Punkt setzt, und dann zum nächsten gehst, und beim letzten noch ein zusätzliches Leerzeichen einfügst. Als letztes musst du noch den Nachnamen hinzufügen.

    VB.NET-Quellcode

    1. 'Nehmen wir an, OS_User ist dein Benutzername.
    2. Dim OS_User As String = "Der Benutzer"
    3. Dim OS_User_Split() As String = Split(OS_User, " ")
    4. 'Zur Ausgabe: (Beispielcode)
    5. Teil1 = OS_User_Split(1) 'Teil 1 vom Namen
    6. Teil2 = OS_User_Split(2) 'Teil 2 vom Namen u.s.w
    7. 'Und den ganzen String
    8. TeilFull = OS_User_Split(0)

    Nur wenn du kein RegEx anwenden willst.
    RegEx ist aber an machen Stellen viel Sauberer.. hier jedoch würde es gehen!

    Als kleine Ergänzung:

    VB.NET-Quellcode

    1. Dim Anzahl_An_Woertern As Integer = OS_User_Split.Length
    Karl-Heinz Mustermann --> K.Mustermann

    Also ich würd das so machen:

    1. Prüfen ob ein "-" vorkommt. (String.indexOf())
    1.1 wenn ja an "-" Spliten und mit SubString den 1. Buchstaben holen
    2. Neuen String zusammenbasteln

    Das lässt sich bei so simplen Sachen mit Splitten sehr gut machen. Performanter und vor allem eleganter geht das mit Regex, wie meine Vorposter schon geschrieben haben.
    "I think Microsoft has abused the Windows brand so much that it has lost its cachet."
    Paul Thurrott
    Sieh Dir mal dies an:

    VB.NET-Quellcode

    1. Dim name As String = "Karl-Heinz F. Mustermann"
    2. Dim sep() As Char = {"-"c, "."c, " "c}
    3. Dim parts() As String = name.Split(sep, StringSplitOptions.RemoveEmptyEntries)
    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!