Listbox Item auf Inhalt prüfen

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Listbox Item auf Inhalt prüfen

    Hey,

    Ich komme im Moment nicht weiter und finds zum kotzen.

    Ich habe eigentlich eine einfache Frage:
    Ich muss überprüfen ob eine Zeile in einer Listbox den folgenden Text enthält:
    "aa_bb_" z.B.

    Kriege das aber nicht bebacken.
    Danach muss ich nurnoch das "aa_bb_" löschen um an den dahinter liegenden Text zu kommen.

    Ich steh echt auf dem Schlauch wie mach ich das?

    Viele Grüeß
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim gefundenerstring as String
    2. For u = 0 to Listbox1.items.count-1
    3. if Listbox1.items(u).substring(0,6) = "aa_bb_" then
    4. gefundenerstring = Listbox1.items(u).tostring
    5. End if
    6. Next
    7. gefundenerstring = gefunderstring.Replace("aa_bb_","")


    keine Garantie für Richtigkeit habs jetzt ausm Kopf geschrieben

    8-) faxe1008 8-)
    Zuerst gehts ja ums finden und da stürzt das Programm ab mit deinem Code.
    Bei meinem findet er das nicht

    Listbox1.Items.contains Da muss ich ja anscheinend den kompletten
    String angeben? Der muss aber nach aa_bb_ veränderlich bleiben :X
    warum arbeitest du mit der conains methode? wenn du weißt wo nach du suchst verwende doch Substring ;)

    achja mit der contains methode läuft es auch:


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim gefundenerstring As String = Nothing
    3. For u = 0 To ListBox1.Items.Count - 1
    4. If ListBox1.Items(u).contains("aa_bb_") = True Then
    5. gefundenerstring = ListBox1.Items(u).ToString
    6. End If
    7. Next
    8. gefundenerstring = gefundenerstring.Replace("aa_bb_", "")
    9. MsgBox(gefundenerstring)
    10. End Sub


    und so läuft es auch mit substring ohne probleme
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim gefundenerstring As String = Nothing
    2. For u = 0 To ListBox1.Items.Count - 1
    3. Dim g As String = ListBox1.Items(u).ToString
    4. If g.Length > 6 Then
    5. If g.Substring(0, 6) = "aa_bb_" Then
    6. gefundenerstring = ListBox1.Items(u).ToString
    7. End If
    8. End If
    9. Next
    10. gefundenerstring = gefundenerstring.Replace("aa_bb_", "")
    11. MsgBox(gefundenerstring)

    8-) faxe1008 8-)

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

    Seit wann ist ein String Nothing? Strings sind "" oder Empty (Option Strict On!)
    Wenn dein Item mit dem gesichten String bginnt ist StartsWith das Mittel der Wahl für die Suche. Das Entfernen dieses Suchstrings kannste dann mit Substring machen.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    Timtim schrieb:

    Zuerst gehts ja ums finden und da stürzt das Programm ab mit deinem Code.
    Da haste aber einen Anhaltspunkt, Dich mit dem Code zu befassen und gezielt nach einer Lösung zu suchen.
    Also:
    In der Zeile so unsd so tritt dieser und jener Fehler auf.
    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!
    @Vatter:
    Strings können Nothing sein, da es sich intern um Strukturen handelt. Edit: Sagen ma so. String ist eine Klasse und kann deshalb Nothing sein (wie jede andere Klasse auch)
    Mit der Methode IsNullOrEmpty(s) kann überprüft werden ob dieser Nothing oder String.Empty ist.

    lg
    Bilder
    • string.png

      12,09 kB, 740×312, 106 mal angesehen
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten

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

    fichz schrieb:

    Strings können Nothing sein
    Strings sind anders.
    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!
    Nothing (also "Nix") verweist für mich auf ein nicht instanziertes (nicht vorhandenes) Object. Da geht denn jede Verwendung in eine Fehlermeldung "Objectverweis fehlt..."
    Ein String kann zwar als Nothing deklariert werden ist aber als Variable verwendbar, halt einfach leer.
    Ich finde, man sollte dies auch im Code erkennbar machen. scheint vielleicht nen bisserl übertrieben, aber ich finds "anständiger"
    Und der Unterschied zwischen String und "normalen" Klassen lässt sich it folgendem Beispiel veranschaulichen.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. 'Test mit String
    3. Dim s1 As String = "String1"
    4. Dim s2 As String = s1
    5. MessageBox.Show(String.Format("s1= {0}; s2= {1}", s1, s2))
    6. s2 = "String2"
    7. MessageBox.Show(String.Format("s1= {0}; s2= {1}", s1, s2))
    8. 'Test mit Objekt
    9. Dim o1, o2 As New clsTest
    10. o1.name = "Test1"
    11. o2 = o1
    12. MessageBox.Show(String.Format("o1= {0}; o2= {1}", o1.name, o2.name))
    13. o2.name = "Test2"
    14. MessageBox.Show(String.Format("o1= {0}; o2= {1}", o1.name, o2.name))
    15. End Sub
    16. End Class
    17. Public Class clsTest
    18. Public name As String
    19. End Class
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    @Vatter:
    Verstehe dich ;)

    Jedoch gilt String als "unveränderliches Objekt" (imuntable object). Ein String ist ein Klasse (sehen wir ja im Objectbrowser auch so). Ein Object von String kann nicht verändert werden (intern) sondern es wird ein neues String Object erzeugt und das andere ("alte") verworfen. (Der Zeiger darauf)

    Somit wird bei der Zuweisung, um bei deinem Beispiel zu bleiben

    VB.NET-Quellcode

    1. s2 = "String2"

    für die Variable s2 ein neues String Object übergeben. Der alte Zeiger für "String1" wird über den GC verworfen, somit besteht keine gemeinsame Referenz mehr auf dieses Object und es bestehen somit 2 verschiedene Objekte.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten