Springen naar inhoud


- - - - -
VS 2012

Langste String Uit Een Listbox Halen

Visual Basic 2012

  • Log in a.u.b. om te beantwoorden
Er zijn 4 reacties in dit onderwerp

#1 ludo64

ludo64

    Rookie Developer

  • Leden
  • Pip
  • 30 berichten
    Laatst bezocht 25 jul 2019 15:42
  • LocatieTongeren

Geplaatst op 28 juni 2019 - 12:03

Hallo,
Ik heb me al suf gegoogled maar vind er niks over.
In een listbox staan een 50-tal namen, daarvan moet ik bepalen welke de langste is.
Wie kan mij op weg helpen want ik weet zelfs niet waar of hoe ik moet beginnen.

#2 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1163 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 28 juni 2019 - 16:30

Bericht bekijkenludo64, op 28 juni 2019 - 12:03, zei:

In een listbox staan een 50-tal namen,
Haal ze er uit, of nog beter stop ze er nooit in:
Visual Basic Code:
	 Dim states As New List(Of String)(
		 {
		 "Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut",
		 "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas",
		 "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi",
		 "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York",
		 "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island",
		 "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington",
		 "West Virginia", "Wisconsin", "Wyoming"
		 })
	 ListBoxStates.DataSource = states


Bericht bekijkenludo64, op 28 juni 2019 - 12:03, zei:

In een listbox staan een 50-tal namen, daarvan moet ik bepalen welke de langste is.
Wie kan mij op weg helpen want ik weet zelfs niet waar of hoe ik moet beginnen.
Bepaal eerst de grootste lengte:
Visual Basic Code:
	Dim maxLengte = states.Max(Function(s) s.Length)



Selecteer dan welke strings die grootste lengte hebben (kan er meer dan 1 zijn)
Visual Basic Code:
	Dim langsteNamen = states.Where(Function(s) s.Length = lengte).ToList


Indien je ze wil tonen (bijvoorbeeld in een ListBox :D )
Visual Basic Code:
	ListBoxSelectie.DataSource = langsteNamen



#3 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1163 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 28 juni 2019 - 17:46

Of indien je geen Linq wil gebruiken:
Visual Basic Code:

	Dim langsteNamen = SelecteerOpLengte(states, MaxLengte(states))
   
	Function MaxLengte(lijst As List(Of String)) As Integer
		Dim result As Integer = 0
		For index = 0 To lijst.Count - 1
			result = Math.Max(result, lijst(index).Length)
		Next
		Return result
	End Function

	Function SelecteerOpLengte(lijst As List(Of String), lengte As Integer) As List(Of String)
		Dim result As New List(Of String)
		For Each item As String In lijst
			If item.Length = lengte Then result.Add(item)
		Next
		Return result
	End Function


Maar dat vind ik een beetje triest, want Linq is net gemaakt om dit soort code te vermijden.

#4 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1163 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 28 juni 2019 - 22:48

Bericht bekijkenDirk Andries, op 28 juni 2019 - 16:30, zei:

Haal ze er uit,

Het is beter ze er niet in te stoppen, maar als je dat al gedaan had gaat het uithalen als volgt, zoals al enkele malen getoond:
Visual Basic Code:
  Dim states = StatesListBox.Items.Cast(Of String).ToList


Ofwel zonder linq:
Visual Basic Code:
   Dim states As New List(Of String)
   For Each item As String In ListBoxStates.Items
		 states.Add(item)
	Next


In beide gevallen is states een List(Of String).
Dat is dan zoals een Array van String, maar dan slimmer.

#5 ludo64

ludo64

    Rookie Developer

  • Leden
  • Pip
  • 30 berichten
    Laatst bezocht 25 jul 2019 15:42
  • LocatieTongeren

Geplaatst op 29 juni 2019 - 10:47

Thx Dirk, met uw eerste voorbeeld is het gelukt.





Ook met taq VS 2012, Visual Basic 2012 voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[VS 2012] Untitled 1

Met dank aan J├╝rgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)