For Each mit Array

  • Allgemein

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Max1001.

    For Each mit Array

    Hallo Community

    ich habe ein quadratisches Array z.B.

    VB.NET-Quellcode

    1. Dim Wörter(,) As String = New String(1, 1) {{"Apfel", "Birne"}, {"Banane", "Orange"}}

    und möchte nun mit For Each jedes Wort in der ersten Zeile überprüfen:

    VB.NET-Quellcode

    1. For Each Wort As String in Wörter(0, )
    2. Next

    ich weiß aber nicht, was nach dem Komma hingehört, oder ob es anders geschrieben werden muss.
    Wo ich schon dabei bin, gibt es eine schnelle Möglichkeit alle Werte in einem Array in ein anderes zu kopieren?
    Also z.B.

    VB.NET-Quellcode

    1. Dim Wörter(,) As String = New String(1, 1) {{"Apfel", "Birne"}, {"Banane", "Orange"}}
    2. Dim Wörter2(,) As String = New String(1, 1)

    und alle Werte von Wörter(,) sollen in Wörter2(,) geschrieben werden.
    Ich bedanke mich für Hilfe!
    Ganz einfach:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim Wörter(,) As String = New String(1, 1) {{"Apfel", "Birne"}, {"Banane", "Orange"}}
    3. For Each wort In Wörter
    4. Debug.WriteLine(wort)
    5. Next
    6. End Sub
    Bilder
    • Wörter.jpg

      31,11 kB, 915×244, 115 mal angesehen
    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!
    in einem richtigen mehrdimensionalen Array verhält sich For Each eigentümlich.

    Man kann nicht eine Zeile oder Spalte mit ForEach durchgehen, sondern man muß auf For i zurückgreifen.

    Oder du nimmst jagged Arrays, also nicht ein mehrdimensionales Array, sondern ein eindimensionales Array von eindimensionalen Arrays. Da gibts Möglichkeiten, Zeilen oder Spalten mit ForEach zu durchlaufen.

    Gugge auch Auflistungen + MehrDimension - Abschnitt "scheinbare Mehrdimensionalität".
    Vielen Dank ErfinderDesRades, mit dem "unechten" Array hat es geklappt:

    VB.NET-Quellcode

    1. Dim KeyWords As String()() = New String()() {New String() {"Apfel", "Banane"}, New String() {"Birne","Orange"}}
    2. For I As Integer = 0 To KeyWords.Length + 1
    3. MsgBox(KeyWords(0)(I))
    4. Next


    Fürs Spaltenauslesen brauche ich aber noch eine Funktion, die mir die Anzahl der Arrays im Array zählt, gibt es so etwas?
    So was?

    VB.NET-Quellcode

    1. Dim KeyWords As String()() = New String()() {New String() {"Apfel", "Banane"}, New String() {"Birne", "Orange", "Zitrone"}}
    2. Dim i1 As Integer = KeyWords(0).Length
    3. Dim i2 As Integer = KeyWords(1).Length
    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!
    @RodFromGermany

    diese Funktion zählt mir nur die Wörter pro Spalte aber nicht die Anzahl.

    @ErdinderDesRades

    Vielen, vielen Dank!
    Ein Problem habe ich jetzt aber noch:

    Ich brauche das Array in meinem Fall als Public, und jetzt meckert Option Strict on, dass die Variablendeklarationen eine As-Klausel verlangen...
    Was soll ich jetzt tun?