Avatar billede amews_aj Nybegynder
07. april 2009 - 21:40 Der er 3 kommentarer og
1 løsning

Array.Sort virker ikke som forventet

Det her fatter jeg ikke en meter af:

static void Main(string[] args)
{
  string[] aa = new string[] { "aaa", "aab", "bba" };
  Array.Sort(aa);
  foreach (string str in aa)
  {
    Console.WriteLine(str);
  }

  Console.ReadLine();
}

Efter min mening burde dette returnere
aaa
aab
bba

Men i stedet får jeg
bba
aaa
aab

Det er jo ikke engang reverse order, men en mærkelig blanding

Nogen der har gode ideer?
Avatar billede arne_v Ekspert
07. april 2009 - 21:48 #1
Proev og angive CultureInfo.

Jeg tror at den sorterer dansk, hvor aa jo kommer sidst i alfabetet.
Avatar billede arne_v Ekspert
07. april 2009 - 21:54 #2
using System;
using System.Threading;
using System.Globalization;

namespace E
{
    public class Program
    {
        public static void Main(string[] args)
        {
              string[] aa = new string[] { "aaa", "aab", "bba" };
              Array.Sort(aa);
              foreach (string str in aa)
              {
                Console.WriteLine(str);
              }
              Array.Sort(aa, (s1,s2) => String.Compare(s1, s2, StringComparison.InvariantCulture));
              foreach (string str in aa)
              {
                Console.WriteLine(str);
              }
              Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
              Array.Sort(aa);
              foreach (string str in aa)
              {
                Console.WriteLine(str);
              }
              Console.ReadKey();
          }
    }
}
Avatar billede amews_aj Nybegynder
07. april 2009 - 21:56 #3
Vil det sige at den opfatter aa som å ?
Det er da tåbeligt, men du har ret det virker.

Noget andet der åbenbart også virker (fra C# chat på IRC):
Array.Sort(aa, StringComparer.OrdinalIgnoreCase);

Takker, smid et svar.
Avatar billede arne_v Ekspert
07. april 2009 - 22:01 #4
Saadan sorterer man paa dansk.

Men jeg ville nok ogsaa foretraekke at default var computer-engelsk og saa skulle man angive dansk for at faa det. men ....

Og et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester