[VB10]Alle Einträge einer ListBox ab bestimmten Zeichen abschneiden

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RoulettePilot.

    [VB10]Alle Einträge einer ListBox ab bestimmten Zeichen abschneiden

    Hallo liebes Forum,

    ich habe ein Problem, bei dem ich nicht weiter weiß. Ich hoffe, dass ihr mir helfen könnt.
    Ich habe eine ListBox mit mehreren Link-Einträgen. Die Links beinhalten fast alle ein "?" und ab dann soll der Rest des Links abgeschnitten werden, Fragezeichen inklusive.
    Wie kann ich das einfach und smart bewerkstelligen? Mein bisheriger Code sieht folgendermaßen aus:

    Quellcode

    1. Dim i As Integer
    2. For i = 0 To ListBox1.Items.Count - 1
    3. Dim arrWords() As String = ListBox1.Items(i).Split("?"c)
    4. For x = 0 To UBound(arrWords)
    5. ListBox2.Items.Add(arrWords.ElementAt(x))
    6. Next x
    7. Next i

    Momentan wird einfach die ListBox geleert.

    Vielen Dank für eure Hilfe.
    Ich hätte dieses zur Auswahl

    VB.NET-Quellcode

    1. ListBox2.Items.Clear()
    2. For i = 0 To ListBox1.Items.Count - 1
    3. If CType(ListBox1.Items(i), String).Contains("?") Then
    4. ListBox2.Items.Add(CType(ListBox1.Items(i), String).Substring(0, CType(ListBox1.Items(i), String).IndexOf("?")))
    5. Else
    6. ListBox2.Items.Add(ListBox1.Items(i))
    7. End If
    8. Next

    RoulettePilot schrieb:

    Ich hätte dieses zur Auswahl

    VB.NET-Quellcode

    1. ListBox2.Items.Clear()
    2. For i = 0 To ListBox1.Items.Count - 1
    3. If CType(ListBox1.Items(i), String).Contains("?") Then
    4. ListBox2.Items.Add(CType(ListBox1.Items(i), String).Substring(0, CType(ListBox1.Items(i), String).IndexOf("?")))
    5. Else
    6. ListBox2.Items.Add(ListBox1.Items(i))
    7. End If
    8. Next



    Vielen Dank, das funktioniert schonmal, aber wie kann ich das ganze ohne ListBox2 umsetzen, sodass sich alles in ListBox1 abspielt?
    Huhu,

    vielleicht so:

    VB.NET-Quellcode

    1. For i As Integer = 0 To ListBox1.Items.Count - 1
    2. ListBox1.Items.Item(i) = ListBox1.Items(i).ToString.Split("?"c)(0)
    3. Next


    *edit*
    @ErfinderDesRades option strict war wirklich nicht an, hatte mich schon gewundert, warum der code nicht bemeckert wurde. merkwürdig ;( ;(
    :!: Danke an alle, die ihr Wissen freiwillig teilen und stets so kompetent & höflich sind :!:

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

    besser wärs, du würdest Daten und Oberfläche denkerisch trennen:
    Die Links nicht in eine Listbox tun, sondern in eine List(Of String).
    Weil Listbox ist Oberfläche, und List(Of String) ist eine Datenklasse (mit vielen Strings drin).

    So, um alles ab "?" zu entfernen - das ist Datenverarbeitung, nicht Oberflächen-Verarbeitung.
    also

    VB.NET-Quellcode

    1. dim links as List(Of String)'angenommen hier seien die Links drin - nicht in der Listbox
    2. for i= 0 to links.Length -1
    3. links(i)=links(i).Remove(links(i).IndexOf("?"c)
    4. next
    5. Listbox1.DataSource=Nothing
    6. Listbox1.DataSource=links 'Anzeige aktualisieren
    hofflich geht so - ungetestet

    @Vorposter: Option Strict On! - is wichtig