Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Morphrowsky

[VB.NET] Como fazer um 'ranking' de valores no textbox

Recommended Posts

Morphrowsky

Olá, minha dúvida é a seguinte, já criei o sistema de listar ele e as vezes que repetiu mas eu gostaria agora

de fazer o seguinte

o "IP" que repetiu mais vezes ficar em primeiro lugar, o segundo em segundo

e assim em diante

Dim itemlist As New List(Of String)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim strReturn As New System.Text.StringBuilder

Dim lItems As New Dictionary(Of String, Integer)

Dim intCount As Integer = 0

Dim strCurrentItem As String = String.Empty

itemlist.Add(ip.Text)

'Loop through listbox grabbing items...

For Each nItem As String In itemlist

If Not (lItems.ContainsKey(nItem)) Then 'Add listbox item to dictionary if not in there...

'The current item we are looking at...

strCurrentItem = nItem

'Check how many occurances of this items there are in the referenced listbox...

For Each sItem As String In itemlist

If sItem.Equals(strCurrentItem) Then 'We have a match add to the count...

intCount += 1

End If

Next

'Finally add the item to the dictionary with the items count...

lItems.Add(nItem, intCount)

'Reset intCount for next item... and strCurrentItem

intCount = 0

strCurrentItem = String.Empty

End If

Next

'Add to the string builder...

For i As Integer = 0 To lItems.Count - 1

strReturn.AppendLine(lItems.Values(i).ToString & " | " & lItems.Keys(i).ToString)

Next

richtextbox1.Text = (strReturn.ToString)

End Sub

O Código está funcionando perfeitamente mas está saindo assim:

3 | 192.99.156.98

10 | 186.206.152.52

5 | 186.206.144.4

2 | 186.206.155.7

43 | 186.66.6.2

6 | 186.206.152.77

Ele está totalmente desorganizado e não estou conseguindo resolver gostaria que me ajudem. não sei, tipo um sort de array

eu quero mesmo é organizar esses ips e seus valores olhem... gostaria que ficasse assim(esses ips é apenas exemplo, os ips vem do strreturn.tostring)

43 | 186.66.6.2

10 | 186.206.152.52

6 | 186.206.152.77

5 | 186.206.144.4

3 | 192.99.156.98

2 | 186.206.155.7

"O que tem valor mais alto ficasse em primeiro que no caso esse valor é as repetições dele.".

43 | 186.66.6.2 << no caso é este oque está com mais valor

eu tambem gostaria que apagasse o valor dele e o separador 43 | e escrevesse apenas o IP em uma outra string que no caso seria (186.66.6.2) obrigado a atenção.

Edited by Morphrowsky

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.