Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

Morphrowsky

Organizar os IPs de acordo com os valores

Mensagens Recomendadas

Morphrowsky    0
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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
He B TeMy    37
He B TeMy

Mete as tags de código nisso, mal consigo ler sem um editor.

Que salsa de código vai praí, tás a ver 2 loops á mesma colecção dentro um do outro... com o objectivo de encontrar duplicados?

Já experimentas-te usar LINQ? http://stackoverflow.com/questions/7832602/list-array-duplicates-with-count

Se não queres mostrar a contagem dos IP's para quê adicionares nesta linha?

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

Adiciona só os IP's por ordem de contagem e tá bom.

De onde tás a ir buscar os IP's já agora?

Editado por He B TeMy

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.