Gå til innhold

Anbefalte innlegg

Skrevet

Hei!

 

Ifb. med en sorteringsalgoritme dukket det opp noe som jeg oppfattet som merkelig. Laget et enkelt eksempel av det :

 

using System;

using System.Collections.Generic;

using System.Text;

 

namespace SorteringsTestNorsk

{

 

class Program

{

 

static void Main(string[] args)

{

string[] mineOrd ={ "aa","ab", "ac" };

skrivut(mineOrd,"Uten sortering");

 

// vi sorterer

Array.Sort(mineOrd);

skrivut(mineOrd,"Etter sortering");

}

 

static void skrivut(string[] ordene,string kommentar)

{

Console.WriteLine("\n" + kommentar);

foreach (string ord in ordene)

{

Console.WriteLine(ord);

}

}

}

}

 

Uskrift :

Uten sortering

aa

ab

ac

 

Etter sortering

ab

ac

aa

Press any key to continue . . .

 

Jeg trodde faktisk at 'aa' kom før 'ab' og 'ac'.. Det virker for meg som

om 'aa' = å...

Er dette en bug..eller en feature..i .Net?

Er det mulig å sette en language settings som overstyrer dette?

Videoannonse
Annonse
Skrevet

Takk. Måtte sette hele tråden til et nytt språk..Likte ikke dette - 'aa' <> 'å' også på norsk så det burde ikke vært slik. All sortering med 'aa' bli jo fullstendig bak mål.

Skrevet

Jo - skjønner at default setting på denne settes av installasjonen på OS'et.

Har forresten også funnet at en kan sende en Icomparer sammen med sort'n. Eks:

Array.Sort(mineOrd, Comparer.DefaultInvariant);

Her settes den til standard - altså slik at aa kommer foran ab - og en slipper å dynge ned hele tråden med en annen CultureInfo.

 

Jeg mener uansett at dette heller mer mot en bug, enn feature - da default sortering for norsk installasjon burde være slik at aa går foran ab - men dette blir vel mer en språkdiskusjon -

 

Tenk deg f.eks skulle sortere bilmerker: Saab, Skoda..Der blir jo Skoda komme før Saab i listen om en bruker Norske default instilling...(Noen burde hinte Saab importøren om MS sin implementasjon av .NET ;-)).

Når en er klar over hvordan dette kan håndteres er det jo lettere å se på det som en feature... :whistle:;)

Skrevet (endret)
Jeg mener uansett at dette heller mer mot en bug, enn feature - da default sortering for norsk installasjon burde være slik at aa går foran ab - men dette blir vel mer en språkdiskusjon -

 

Tenk deg f.eks skulle sortere bilmerker: Saab, Skoda..Der blir jo Skoda komme før Saab i listen om en bruker Norske default instilling...(Noen burde hinte Saab importøren om MS sin implementasjon av .NET ;-)).

Når en er klar over hvordan dette kan håndteres er det jo lettere å se på det som en feature... :whistle:  ;)

7527943[/snapback]

 

Hva du mener er en bug eller feature er egentlig ganske likegyldig. Det ER en feature. Microsoft følger her Norske rettskrivningsregler. Akuratt som hva alle andre leverandører gjør (testet Oracle, MySQL, Java, etc i det siste?). I Norge vil AA bli sortert som Å. Spør læreren din på barneskolen så skal du nok se han er helt enig. Andre land har også forskjellige regler for sortering, det er ikke bare Norge.

 

Jeg heter forresten Aakre til etternavn. På norske lister kommer jeg bakerst, og på f.eks. engelske kommer jeg først. Sånn er det bare. Du får heller klage over Norsk Språkråd. Det er nok de som har en "bug", ikke Microsoft :nei:

Endret av jorn79
Skrevet

Heisan!

 

Det er nok ikke så enkelt.

 

Se her :

 

http://www.ordnett.no/Alfabeter.html

 

Om dette er korrekt vites ikke - men ut fra dette så er regelen at f..eks Saab kommer foran Skoda, mens Aase blir tolket som Åse og sortert deretter. Mao. en må kunne håndtere begge - og det er det jo mulig å få til. Poenget var hva som settes default. Og det normale - ved tvil - er at en skal ,ifølge nettsiden, bruke streng alfabetisering. Mao. skal en faktisk sett aa foran ab om en er i tvil. MS har valgt default den andre versjonen . Jeg var ikke klar over dette når denne tråden ble startet. Testet mot en MySQL base og tok en insert på en del navn. Tok så en ordinær select med order by navn. Her fikk jeg faktisk opp en 'aa' foran 'ab'.

Men dette får bli nok sidesprang for nå

Skrevet
Heisan!

 

Det er nok ikke så enkelt.

 

Se her :

 

http://www.ordnett.no/Alfabeter.html

 

Om dette er korrekt vites ikke - men ut fra dette så er regelen at f..eks Saab kommer foran Skoda, mens Aase blir tolket som Åse og sortert deretter. Mao. en må kunne håndtere begge - og det er det jo mulig å få til. Poenget var hva som settes default. Og det normale - ved tvil - er at en skal ,ifølge nettsiden, bruke streng alfabetisering. Mao. skal en faktisk sett aa foran ab om en er i tvil. MS har valgt default den andre versjonen  . Jeg var ikke klar over dette når denne tråden ble startet. Testet mot en MySQL base og tok en insert på en del navn. Tok så en ordinær select med order by navn. Her fikk jeg faktisk opp en 'aa' foran 'ab'. 

Men dette får bli nok sidesprang for nå

7531156[/snapback]

 

Du har nok rett i sorteringen :)

 

Men ISO standaren sier at AA skal sorteres som Å. At MySQL'n din ikke gjør det er vel fordi du har satt feil collation.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...