Gå til innhold

Anbefalte innlegg

Er det noen som vet hvordan man kan sortere ett array i stigende rekkefølge sånn som dette?

  • tekst1
  • tekst2
  • tekst4
  • tekst7
  • tekst10
  • tekst15
  • tekst20

Jeg har testet en god del. Og dette er det jeg har til nå:

      Dim fil() As String = {"tekst1", "tekst20", "tekst2", "tekst15", "tekst10", "tekst4", "tekst7"}

       Array.Sort(fil)

       For i As Integer = 0 To fil.GetUpperBound(0)
           Console.WriteLine(fil(i))
       Next

 

Koden over gir resultatet:

  • tekst1
  • tekst10
  • tekst15
  • tekst2
  • tekst20
  • tekst4
  • tekst7

Dette ser vi at ikke stemmer med "vanlig tellemåte". Her kommer 10 før 2.

 

Noen som har noen ideer til hvordan jeg kan løse problemet?

Lenke til kommentar
Videoannonse
Annonse

Dette ser vi at ikke stemmer med "vanlig tellemåte". Her kommer 10 før 2.

 

Noen som har noen ideer til hvordan jeg kan løse problemet?

 

det er (merkelig nok) fordi tallet 1 kommer før 2.. så maskinen sorterer tallene i rekkefølgen 1x, 2x, 3x osv...

Endret av ilpostino
Lenke til kommentar
det er (merkelig nok) fordi tallet 1 kommer før 2.. så maskinen sorterer tallene i rekkefølgen 1x, 2x, 3x osv...

 

Har funnet ut det ja. Er faktisk ikke så dum.. Hehe...

 

Men er det noen som kan hjelpe med å sortere stringene i riktig rekkefølge?

Lenke til kommentar

Så lenge det er tekststrenger som skal sorteres så må du nesten belage deg på å skrive 01, 02, osv. Eventuelt kan du lage deg en sorteringsmetode som plukker fra hverandre tekst og tall, men den frykter jeg kan bli litt stygg...

Lenke til kommentar

Enkelt nok; implementer IComparer.

Omtrent slik:

public namespace Blah {
  public class Compare : IComparer {
     int IComparer.Compare( Object x, Object y )  {
        // 5 er lengden av 'tekst'
         int num1 = int.Parse((string)x).SubString(5, ((string)x).Lenght-5);
         int num2 = int.Parse((string)y).SubString(5, ((string)y).Lenght-5);
        return num2 - num1;  // eller noe slikt
     }
  }
}

og kall deretter sort med en instans av den klassen.

Pseudokode, vil sannsynligvis verken kompilere eller virke - men et startpunkt.

Flere eksempler og forklaringer på MSDN help

 

- grå -

Lenke til kommentar
  • 7 måneder senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...