Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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 :)



I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L'insieme dei due costituisce una forza incalcolabile. [Albert Einstein]
http://adf.ly/KNVLD
PM Quote
Avatar
Ultimo (Member)
Expert


Messaggi: 513
Iscritto: 22/05/2010

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

Devi splittare le stringhe con la funzione split ;)


Ultimo (Hai voluto la bicicletta ? ....)

Studiare LINQ, WPF, ASP.NET MVC, Entity Framwork, C#, Blend, XAML, Javascript, HTML5, CSS .....(tanta roba)

https://www.dropbox.com/s/c2aots5x4urgbhf/setup_game_sudoku ...
PM Quote
Avatar
sps84 (Normal User)
Pro


Messaggi: 192
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!


L'apprendista di C#...
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



Blog:
<coming soon>
Appalo:
http://www.appalo.it/
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


I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L'insieme dei due costituisce una forza incalcolabile. [Albert Einstein]
http://adf.ly/KNVLD
PM Quote