Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Come mettere in ordine decrescente un array di stringhe?
Forum - C# / VB.NET - Come mettere in ordine decrescente un array di stringhe?

Avatar
Jake7zDunn (Normal User)
Rookie


Messaggi: 30
Iscritto: 24/07/2012

Segnala al moderatore
Postato alle 18:27
Martedė, 24/07/2012
come posso mettere in ordine decrescente delle stringhe in base al primo numero?
ho provato ad usare questo codice

Codice sorgente - presumibilmente VB.NET

  1. Dim x() As String = {"34|12", "50|300", "200|1", "12|300"}
  2. 'ho messo l'array in ordine crescente
  3. System.Array.Sort(x)
  4. 'ho invertito l'array per farlo diventare decrescente
  5. System.Array.Reverse(x) '
  6. 'ho usato un ciclo for each per visualizzare il risultato
  7. For Each y As String In x
  8. TextBox1.AppendText(y & vbCrLf)
  9. Next



ma il risultato č
50|300
34|12
200|1
12|300
perchč mi mette in ordine l'array in base a tutti i numeri, non solo in base al primo...ho provato in tutti i modi ma non ci riesco...
sono nuovo in questo forum , spero nel vostro aiuto :)


PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 19:39
Martedė, 24/07/2012

Devi splittare le stringhe con la funzione split ;)


If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 20:15
Martedė, 24/07/2012
Ciao allora questo potrebbe esserti d'aiuto, č una possibile soluzione tramite l'utilizzo di Linq. Se ho capito bene cerchi di ordinare il tutto per la prima lettera, quindi in una stringa qualsiasi puoi accedere ad una data posizione come mostrato di seguito:

Codice sorgente - presumibilmente VB.NET

  1. string parola = "ciao";
  2.  
  3. parola[0] = "c"
  4. parola[1] = "i"
  5.  
  6. //etc...
  7.  
  8. string[] x = new string[] { "34|12", "50|300", "200|1", "12|300" };
  9.  
  10. var y = (from item in x
  11.                      orderby item[0] ascending
  12.                      select item).ToArray();



Se ho fatto qualke gaffa correggete :) Spero di esserti stato d'aiuto!

PM Quote
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 20:17
Martedė, 24/07/2012
C'č un overload di Array.Sprt che accetta un delegato di tipo Comparison per definire la condizione di ordinamento.
Quindi potresti fare cosė
Codice sorgente - presumibilmente VB.NET

  1. Dim myarray() As String = {"50|300", "34|12", "200|1", "12|300"}
  2.     Array.Sort(myarray, AddressOf comp)
  3.     For Each a As String In myarray
  4.         Console.WriteLine(a)
  5.     Next
  6.     Console.ReadKey()
  7.  
  8.     Function comp(x As String, y As String) As String
  9.         Dim a, b As Integer
  10.         a = Integer.Parse(x.Split("|")(0))
  11.         b = Integer.Parse(y.Split("|")(0))
  12.         If a > b Then
  13.             Return 1
  14.         ElseIf a < b Then
  15.             Return -1
  16.         Else
  17.             Return 0
  18.         End If
  19.     End Function


PM Quote
Avatar
Jake7zDunn (Normal User)
Rookie


Messaggi: 30
Iscritto: 24/07/2012

Segnala al moderatore
Postato alle 12:49
Mercoledė, 25/07/2012
Grazie Quertj...funziona alla perfezione :D

PM Quote