Split ein Array übergeben

  • VB.NET

Es gibt 38 Antworten in diesem Thema. Der letzte Beitrag () ist von hausl78.

    Split ein Array übergeben

    Hallo!

    Ist es möglich der Split Funktion mehrere Trenner zB als Array übergeben? Also ich möchte zB bei ; oder vbNewLine trennen.. Geht das?

    [edit]
    Ich hab gerade folgendes gefunden, kann es damit gehen?

    seperator =
    New[Char]() {";"c, CChar(vbNewLine)}
    MyArray = Split(txtBox.Text, seperator)


    Danke!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „hausl78“ ()

    Prinzipiell ja. Die Überladung Split(String, Char-Array) existiert.
    Ich sehe aber ein Problem beim Umwandeln von vbNewLine mittels CChar. Ein Char ist immer nur ein Buchstabe, vbNewLine können auch mehrere sein (z. B. CR und LF). CChar nimmt vermutlich einfach den ersten Buchstaben, wobei dann in meinem Beispiel der Line Feed wegfallen würde. Du solltest vielleicht besser CR und LF getrennt angeben [mittels Asc() oder AscW()].
    Ich weiß aber nicht, ob das dann auch so sauber ist, vielleicht hat aber auch noch jemand eine bessere Idee?

    Viele Grüße, Phil.
    Ich hätte es jetzt so aber irgendwie meckert der das seperator nicht als string ok ist.


    VB.NET-Quellcode

    1. Dim numberArray() As String
    2. Dim seperator As String
    3. seperator = {";", vbNewLine}
    4. numberArray = txtBox.Text.Split(seperator)

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

    Nicht verwechseln:
    Während die Methode String.Split ein Char-Array als Separator erlaubt, kannst du bei der Split-Funktion nur einen String angeben.

    Wenn du allerdings ein Char-Array angeben willst, darfst du es nicht als String deklarieren!
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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

    hausl78 schrieb:

    Ich hätte es jetzt so aber irgendwie meckert der das seperator nicht als string ok ist.


    Dim numberArray() As String
    Dim seperator As String
    seperator = {";", vbNewLine}
    numberArray = txtBox.Text.Split(seperator)


    da sind 2 Fehler drin:
    1: du kannst natürlich einer String-variablen ("separator") nicht ein String-Array zuweisen - das sagt dirja auch die Fehlermeldung.
    2: Guck dirdie String.Split()-Überladungen im ObjectBrowser nochmal an. Es gibt eine geeignete, aber die verlangt noch einen weiteren Parameter.

    Übrigens - kennst du VB-Tag richtig benutzen?

    ErfinderDesRades schrieb:

    da sind 2 Fehler drin:
    1: du kannst natürlich einer String-variablen ("separator") nicht ein String-Array zuweisen - das sagt dirja auch die Fehlermeldung.
    2: Guck dirdie String.Split()-Überladungen im ObjectBrowser nochmal an. Es gibt eine geeignete, aber die verlangt noch einen weiteren Parameter.

    Werd ich machen danke für den Hinweis. Noch eine Frage zu 1. Wenn ich aber eine Variable als String deklariere und dann "in" diese ein normales Split() mache, dann enthält diese (String) Variable doch auch ein Array, wird das von VB automatisch type gecastet, oder ist das dann "kein" richiger Array?

    zB:

    VB.NET-Quellcode

    1. Dim myArr() As String
    2. myList = "Hans;Franz;Robert"
    3. myArr = split(myList, ";")
    ... sondern ein String-Array ...

    Was ist dann

    VB.NET-Quellcode

    1. dim myArray() as Array
    Ich kann keinen Datentyp "Array" finden, hab hier leider grad kein VS zur Verfügung.
    Ich glaube mich zu erinnern das das in Visual Studio möglich war..

    So ist es mir klar, aber das obige nicht bzw. der Unterschied.

    VB.NET-Quellcode

    1. dim arrVornamen() as string = {"Hans", "Franz", "Robert"}

    hausl78 schrieb:


    Werd ich machen danke für den Hinweis.

    Hmm - ich sehe keinen meiner Hinweise umgesetzt.
    du benutzt nicht den VB-Tag, und du hast nicht im ObjectBrowser nach String.Split() nachgeguckt, sondern verwendest weiterhin die veraltete Anti-OOP-Split-Funktion.

    Ah-jetzt-wenigstens der VB-Tag:

    hausl78 schrieb:

    Was ist dann

    VB.NET-Quellcode

    1. dim myArray() as Array

    Antwort: Das ist Mist.
    Das ist ein Array im allgemeinen, aber du möchtest doch ein String-Array. Also - was du ja auch schon hast:

    VB.NET-Quellcode

    1. dim arrVornamen() as string = {"Hans", "Franz", "Robert"}


    Jetzt nurnoch das Splitten richtig lernen ;)

    ErfinderDesRades schrieb:

    hausl78 schrieb:


    Werd ich machen danke für den Hinweis.
    Hmm - ich sehe keinen meiner Hinweise umgesetzt. ...
    Jetzt sein mal nicht so streng, habe die Tags gleich nachgezogen und war seit dem *leider* noch nicht an meinem PC. Mir hat das mit dem as Array() nur keine Ruhe gelassen (kennst PHP? $myArr = array() deshalb ;-)), aber wenn es Mist ist, dann ist der Punkt erledigt. Bin gerade in der Arbeit und da gibts kein VS und heute abend bin ich auch erst später daheim *grr* Aber spätestens morgen abend dann schau ich mir das an und berichte..

    Danke! :thumbsup:

    hausl78 schrieb:

    Jetzt sein mal nicht so streng

    Dooch - ich bin voll der KorinthenKacker. ;)

    Und PHP kennich nur vom Namen, und dass man damit WebSites entwickelt.
    Gaaaanz annere Baustelle - davon kannste sogut wie nichts auf VB.Net übertragen.

    gutes VB-OpenBook (und gleichzeitig Warnung vor Galileo-Openbook): dieses Buch Lesen
    Und nützt nix: das musste durchackern, wennde ernsthaft VB.Net programmieren willst. Syntax, OOP, Typisierung, Vererbung, Events, generische TypParameter, Gültigkeitsbereiche, Databinding... - man kann eiglich auf nix davon verzichten.
    Und zunächst mal ühaupt, wie die IDE funktioniert, Fehlermeldungen versteht, und wie man Informationen recherchiert.
    googlemal "vb express 2010 download"

    Wieso ist ein decompiler böse?

    Ich dekompiliere damit Framework-Code, dassis erlaubt.
    Und sehr nützlich, wenn man mal was optimieren will, dass man weiß, was da beklopptes oder geniales unter der Haube tuckert.
    Oder um iwelche listigen Attribute rauszukriegen, mit denen MS das Designer-Verhalten steuert und so Sachen. Grad bei die Attribute habich noch keine systematische Dokumentation gefunden.

    wer ernstlich seinen Code geheim halten will, wird ihn eh durch einen Obfuscator jagen, und dann ist der Code so verhuddelt, dassichda vmtl. wirklich keine Chance hätte, durchzublicken.

    Aber tatsächlich habich nochnie obfuscierten code zu Gesicht bekommen - hab mich aber auch noch nie danach umgesehen.
    ja, das stimmt - am 2010er Buch willer noch Geld verdienen.

    hausl78 schrieb:

    1400 Seiten das is sicher was dabei für mich

    Oh - ja! - da dürfen wir optimistisch sein. ;)

    IMO ist schon das 2005er Buch voll ausreichend, einen Programmierer auszubilden.

    2008 und 2010 hat noch ein paar nette Featurechen hinzugebracht, aber am genannten Grundstock: "Syntax, OOP, Typisierung, Vererbung, Events, generische TypParameter, Gültigkeitsbereiche, Databinding..." gibts nix zu rütteln - also das braucht man, und wenn man das geschnackelt hat, kommt man mit Linq und anonymen methoden auch recht schnell klar (und zurnot kommt man auch immernoch ohne aus).
    Wichtig sind auch die Code-Samples - da gabs auf der Site zeitweilig Probleme.
    ;) ok danke! Is doch "nur" VB und nicht C++ (duck-und-weg)

    Werd mich dann bestimmt morgen melden wegen dem Split.String {";", vbNewLine} zeugs, ich brauch das nämlich als Trenner für Text ein einer Textbox. Alle andern Schnibbel-Funktionen hab ich mit soweit mit regex hinbekommen, aber bei diesen einem Job reicht das nicht, da brauch ich ein Array vorher und muss dann quasi mir foreach und einigen Bedingungen schnibbelnn *laber-laber-....*

    So, gut nun... Schönen abend!