String Split

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von AliveDevil.

    String Split

    Hi,

    Ich hab wieder mal ein Problem bei der Arbeit mit Strings...
    Also mein String sieht so aus:

    VB.NET-Quellcode

    1. Info1$A$B§C$Info2$A$B§C$Info3$A$B§C$Blubb$A$B§C$VB-Paradise.de


    Ich möchte den String nach diesem Splitkey:

    Quellcode

    1. $A$B§C$
    teilen, und dann:

    Label1.text = "Info1"
    Label2.text = "Info2"
    Label3.text = "Info3"
    Label4.text = "Blubb"
    Label1.text = "VB-Paradise.de"


    Wie teile ich das nochmal?
    Und bitte wenn ihr mir ein Code postet auch erklären, das ich es auch verstehe, das wäre nett ;)
    C# Developer
    Learning C++
    Du musst das Split mehrmals hintereinander aufrufen, und dem nächsten Mal immer den String nach dem Trennzeichen übergeben. Am besten rekursiv.

    EDIT: Split kann wohl auch in mehrere Teile aufteilen als nur 2. Wo liegt dann das Problem?

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

    VB.NET-Quellcode

    1. dim st() as string = Deinstringmitzeichen.Split("$A$B§C$")
    2. Label1.text = st(0)
    3. Label2.text = st(1)
    4. Label3.text = st(2)
    5. Label4.text = st(3)


    @enIking1998
    wirklich ? mach mal Option Infer On

    MFG BlackNetworkBit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise

    VB.NET-Quellcode

    1. 'Wir spliten den Text und laden ihn in ein String Array.
    2. Dim sSplit As String() = "Info1$A$B§C$Info2$A$B§C$Info3$A$B§C$Blubb$A$B§C$VB-Paradise.de".Split(CChar("$A$B§C$"))
    3. Erste Info = sSplit(0) 'Jetzt müssen wir nur noch abrufen.
    4. ...
    Mfg
    Vincent

    Schau dir mal String.Split an: msdn.microsoft.com/de-de/library/system.string.split.aspx
    Programmiere Option Strict On. Dann sollte das kein Problem sein.

    String.Split liefert dir ein String-Array das in deinem Fall so aussehen sollte:

    StringArray(0) = "Info1"
    StringArray(1) = "Info2"
    StringArray(2) = "Info3"
    StringArray(3) = "Blubb"
    StringArray(4) = "VB-Paradise.de"

    Einfach den Labels das Element mit dem entsprechenden Index zuweisen. lg

    VB.NET-Quellcode

    1. Dim meinString = "hallotrennungdas isteintrennungtest"
    2. Dim stringArray = meinString.Split({"trennung", "andererTrenner", "nochEinTrenner"}, StringSplitOptions.None)
    3. 'label1.text = stringArray(0) usw


    @Alle anderen:
    "$A$B§C$"c ist aber kein Char, somit ist dein Code Strict Off was böse enden kann xD Da sollte auch casten mit CChar nichts bringen.
    Oder gleich richtig:

    VB.NET-Quellcode

    1. Dim txt = "Info1$A$B§C$Info2$A$B§C$Info3$A$B§C$Blubb$A$B§C$VB-Paradise.de"
    2. Dim parts() = txt.Split(New String() {"$A$B§C$"}, 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!
    @VincentTB: das ist Müll, von der feinsten Sorte! Du versuchst einen String in einen Char zu konvertieren.
    Was soll denn da rauskommen? Ist aefkösfsdfsdf n Char oder n String? Richtig, ein String! Was für ein Zeichen wäre das wohl? Richtig, keins. Denke bitte über Option Strict On nach!

    Topic: Splitten geht, wie es @BlackNetworkBit: gemacht hat, überhaupt nicht, weil es eine String.Split(String)-Methode überhaupt nicht gibt.
    Was du also suchst: String.Split(String(), StringSplitOptions) mit StringSplitOptions.
    Wenn du nun nach aefkösfsdfsdf splitten willst: "IrgendaefkösfsdfsdfeinaefkösfsdfsdfText".Split( { "aefkösfsdfsdf" }, StringSplitOptions.None ) => {"Irgend", "ein", "Text"}.
    Die methode von RodFromGermany geht fein, bei den anderen gab es Probleme weil es kein Char, sondern ein String ist :)
    Danke trotzdem :thumbup:

    VB.NET-Quellcode

    1. Dim txt = "Info1$A$B§C$Info2$A$B§C$Info3$A$B§C$Blubb$A$B§C$VB-Paradise.de"
    2. Dim parts() = txt.Split(New String() {"$A$B§C$"}, StringSplitOptions.RemoveEmptyEntries)


    @RodFromgermany: Könntest du mir das noch etwas genauer erklären, ich verstehs noch nicht ganz ;)
    Das

    VB.NET-Quellcode

    1. Dim txt = "Info1$A$B§C$Info2$A$B§C$Info3$A$B§C$Blubb$A$B§C$VB-Paradise.de"
    ist klar, das ist ja mein Input.
    Parts deklarierst du als Array, das versteh ich auch noch.
    Aber wieso NewString() ? ;o
    C# Developer
    Learning C++

    Rikudo schrieb:

    New String()
    Ich deklariere im Funktionsaufruf ein String-Array und befülle es.
    Du kannst es auch explizit machen, es muss aber ein Array sein:

    VB.NET-Quellcode

    1. Dim splitArray() As String = {"$A$B§C$"}
    2. Dim parts() = txt.Split(splitArray, 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!
    Lachte xD
    Ein String mag aus mehreren Chars bestehen, ist darum aber noch lange kein CharArray.

    Übergibst du der Split-Methode einen CharArray ( {","c, ";"c, "|"c} ) kannst du bei einzelnen Chars splitten.

    "$A$B§C$" ist aber ein String. Willst du Strings als Grenzen nutzen musst du den Weg über die String.Split(String[], StringSplitOptions)-Überladung gehen, also einen String-Array übergeben - in diesem Fall ein StringArray welches nur ein Element enthält.

    Lässt sich aber alles hier nachlesen: msdn.microsoft.com/de-de/library/system.string.split.aspx

    ErfinderDesRades schrieb:

    Wat?

    openbook.galileocomputing.de/c…is_z/011_c_arrays_011.htm
    Arrays vom Datentyp char werden Strings genannt. Ein String ist eine Kette von einzelnen char-Zeichen mit einer abschließenden 0 (was nicht mit dem Zeichen '0' gleichzusetzen ist). char-Arrays sind typischerweise eindimensional.

    Das habe ich früher mal gelesen.
    Wenn das nicht korrekt ist bitte ich um Aufklärung :)
    @RodFromGermany
    In C# müsste man es tatsächlich so machen, der VB-Compiler erleichtert es einem da aber etwas. Du kannst auch das schreiben:

    VB.NET-Quellcode

    1. Dim parts() = txt.Split({"$A$B§C$"}, StringSplitOptions.RemoveEmptyEntries)


    @ErfinderDesRades
    @LaMiy
    Im Prinzip ist ein String schon ein Char-Array, wie es z.B. in C auch gehandhabt wird. In VB (oder .Net allgemein) ist das aber etwas mehr abstrahiert und deswegen meint ein Char-Array als Parameter, dass an allen enthaltenen Chars einzeln gesplittet wird.
    nein, nein nein!

    String und Char() sind unterschiedliche Datentypen, fangt nicht an, zu erzählen, das wäre iwie doch dasselbe.

    Grad weil diese Datentypen eng miteinander verbunden sind, ist wichtig, sie klar zu unterscheiden.

    olle C kennt soweit ich weiß gar keinen Datentyp String, die stellen Text halt mit Char-Arrays dar, und dann kannman mw. sagen, bei dene ist String ein Char-Array.
    Aber dassis Umgangssprachlich, denn korrekterweise gibts in C keine Strings, und daher kann man das korrekterweise eben doch nicht sagen.

    Und Umgangssprachlich mag auch noch hingehen, wenn man sagt, eine Zeichenkette ist ein Haufen Zeichen - aber dassis Umgangssprache.

    ErfinderDesRades schrieb:

    String und Char() sind unterschiedliche Datentypen

    String ist ein Referenztyp, und genau das ist ja auch der Unterschied dazwischen. In Sprachen, die keine Referenztypen haben (nicht objektorientierte Sprachen) wird ein String halt als Char-Array dargestellt. Ich bin aber vollkommen einer Meinung mit dir, dass man das auch differenzieren sollte, wenns die Sprache schon beherrscht.

    Artentus schrieb:

    String ist ein Referenztyp, und genau das ist ja auch der Unterschied dazwischen.
    Char() ist auch ein Referenztyp - alle Arrays sind Referenztypen.
    Also das ist der Unterschied nicht.

    Der Unterschied ist, dass Char-Array Char-Array ist und String ist String.
    Strings sind aus Chars aufgebaut, und Char() ist auch aus Char aufgebaut, aber trotzdem ist String kein Char()
    Ein Boot ist aus Holz, und eine Blockhütte vielleicht auch, aber ein Boot ist keine Blockhütte.