Jump to content


- - - - -
VS 2012

Langste String Uit Een Listbox Halen

Visual Basic 2012

  • Please log in to reply
Er zijn 4 reacties in dit onderwerp

#1 ludo64

ludo64

    Rookie Developer

  • Leden
  • Pip
  • 30 Berichten
    Last Visit 25 Jul 2019 15:42
  • LocatieTongeren

Geplaatst op 28 June 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
  • 1,203 Berichten
    Last Visit
  • LocatieGent

Geplaatst op 28 June 2019 - 16:30

View Postludo64, on 28 June 2019 - 12:03, said:

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


View Postludo64, on 28 June 2019 - 12:03, said:

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
  • 1,203 Berichten
    Last Visit
  • LocatieGent

Geplaatst op 28 June 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
  • 1,203 Berichten
    Last Visit
  • LocatieGent

Geplaatst op 28 June 2019 - 22:48

View PostDirk Andries, on 28 June 2019 - 16:30, said:

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
    Last Visit 25 Jul 2019 15:42
  • LocatieTongeren

Geplaatst op 29 June 2019 - 10:47

Thx Dirk, met uw eerste voorbeeld is het gelukt.





Also tagged with one or more of these keywords: VS 2012, Visual Basic 2012

0 gebruiker(s) lezen dit onderwerp

0 leden, 0 gasten, 0 anonieme gebruikers

Sign In


[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)