Array - Bestimmte Item Eintrag bearbeiten/löschen

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    Array - Bestimmte Item Eintrag bearbeiten/löschen

    Hallo zusammen,

    ich möchte folgendes tun:

    Ich habe eine Variable mit "String" deklariert.
    Zusätzlich habe ich einen Array mit x belibigen Anzahl von Items.

    Nun möchte ich jedes einzelne Item in diesem Array durchackern und überprüfen:
    Entspricht dieser Variabel, dem was in der jeweiligen Item des Arrays von Links nach Rechts steht?
    Wenn ja, sollte er diese löschen, wenn nicht so sein lassen.


    Danke euch im Voraus!
    Zusätzlich habe ich einen Array mit x belibigen Anzahl von Items.


    Auch Strings oder Maßkrüge?

    Generell empfehle ich Dir, wenn es um so etwas geht, mit

    VB.NET-Quellcode

    1. List (Of T)


    zu arbeiten. Ist auch ein Array, aber flexibler und mit mehr Funktionen. Beispiel:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim s As String = "huhu"
    3. Dim listStrings As New List(Of String)
    4. listStrings.AddRange({"huhu2", "huhu1", "huhu"})
    5. If listStrings.Contains(s) Then
    6. listStrings.Remove(s)
    7. End If
    8. End Sub
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @SpaceyX

    Vielen dank für deine Antwort. Aber soweit ich sehe, überprüfst du hier nur ob der gesuchte string (s) in deinem List vorhanden ist. Wenn ja, löscht du diese....
    Das ist mir auch klar, jedoch möchte ich exziplit überprüfen, ob dieser string dem entspricht von dem angesprochenem Item in einem Array oder String von Links gesehen.

    z.b.

    VB.NET-Quellcode

    1. Dim s as String = Test
    2. ListString.Addrange("HalloTest", "ich", "TESTbins")
    3. ' Jetzt sollte er nur die "Test" weglöschen, welche von links gesehen, dem String entsprechen.
    4. 'Also sozusagen sollte der List so schlussendlich aussehen:
    5. '"HalloTest", "ich", "bins")
    Huhu,

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim s As String = "Test"
    3. Dim listStrings As New List(Of String)
    4. listStrings.AddRange({"HalloTest", "ich", "Testbins"})
    5. For i As Integer = 0 To listStrings.Count - 1
    6. If listStrings(i).StartsWith(s) Then
    7. listStrings(i) = listStrings(i).Replace(s, "")
    8. End If
    9. Next
    10. End Sub


    Kurze Erklärung: Du nimmst für diesen Zweck am Besten eine For-Schleife. Die Zählervariable i zeigt dabei immer auf ein Element der Liste. Pass hier auf, Du musst bis Items.Count -1 zählen, da Arrays 0-basiert sind. Nehmen wir an, i hat den Wert 0, dann ist listStrings(0) = "HalloText", verstehst Du? Dann prüfst Du bei jedem Durchlauf, ob listStrings(i) auf ein Element zeigt, dass mit "Test" anfängt. "StartsWith" (String-Funktion). Wenn ja, dann ersetzt Du das "Test" mit "" (nichts). "Replace" (String-Funktion. War es das, was Du meinst?
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @SpaceyX

    Das ist exakt das was ich will... Dankeschön!
    Wie ich sehe, bietet LIst OF wirklich mehr Möglichkeiten als nen Array....

    Das Grundprinzip ist mir klar.
    Jedoch fällt es mir zurzeit schwer beim Programmieren grundsätzlich, (jetzt in diesem Beispiel) auf eben "StartsWith" drauf zu kommen, wenn ich damit bis dahin noch nie damit gearbeitet habe...
    Aber das coole daran ist, dass sichmein Wissen täglich draufaufbaut.
    Ich versuche immer zuerst das Ziel des Programms anhand meines bestehenden Wissens an Befehlen so zu verknüpfen um schlussendich das Ziel zu realiseren. Doch manchmal mehr und manchmal weniger kommt es dazu, dass diese mir nicht reichen...... doch dann gibt es ja zum Glück vb-paradise und solche Mitglieder wie dich... :)

    Thanks nochmals..
    LG
    Ist doch alles gut. Stell Deine Fragen, dafür ist das Forum da, denke ich. Aber vergiss dabei nicht, auch andere Quellen zu Rate zu ziehen. Aber Du gibst Dir Mühe und das ist schön :)
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    @Lukas

    Korrigier mich, wenn ich falsch liege. Aber:

    VB.NET-Quellcode

    1. listStrings.RemoveAll(Function(s1 As String) As Boolean
    2. If s1.StartsWith(s) Then
    3. Return True
    4. Else
    5. Return False
    6. End If
    7. End Function)


    löscht diesen Eintrag. Der Rest nach "Test" soll erhalten bleiben. Ausser ich versteh hier was falsch.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Hab mir jetzt hier nicht alles durchgelesen, aber es lautete
    Wenn ja, sollte er diese löschen, wenn nicht so sein lassen.

    am Anfang.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Ich mussts auch 2. lesen. Aber er meinte, wenn das Wort "Test" am Anfang des Strings steht, dann soll es gelöscht werden, der Rest des Strings sollte erhalten bleiben. Beispiel:

    TestHuhu wird zu Huhu, wohingegen HuhuTest nicht verändert wird.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Jo, war ja auch schon spät heute morgen :) Klar ist Deine Version vernüftiger. Musst mich selber grad fragen, warum... lol :)
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Bequem geht das natürlich auch über ne Extension Method:

    VB.NET-Quellcode

    1. Module ListExtensions
    2. <System.Runtime.CompilerServices.Extension()> _
    3. Public Function RemoveAtStart(ByVal list As List(Of String), ByVal indicator As String) As List(Of String)
    4. If list.Count = 0 Then
    5. Throw New ArgumentException("list")
    6. End If
    7. If String.IsNullOrEmpty(indicator) Then
    8. Throw New ArgumentException("indicator")
    9. End If
    10. For i As Integer = 0 To list.Count - 1
    11. If list(i).ToLower().StartsWith(indicator.ToLower()) Then
    12. list(i) = list(i).Remove(0, indicator.Length)
    13. End If
    14. Next
    15. Return list
    16. End Function
    17. End Module
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Hatten wir das nicht vorhin schon? Die Methode soll einen bestimmten String herausschneiden und das Item belassen, während .RemoveAll entsprechende Items ja wohl entfernt?
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Mal im Ernst. Wenn Du hier was postest, dann geht man davon aus, dass Du die Fragestellung vom TE verstanden hast. Irgendwo Code posten, wo man die Frage nicht versteht, ist eher etwas sinnlos.

    Das Thema ist ohnehin erledigt.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o