emeriks
Goto Top

DotNet String Sortierung

Hi,
habe hier im .Net einen komischen Effekt beim Sortieren von Strings.
Gegeben sind 3 Strings (in Wunsch-Reihenfolge)

  • ABC-XY-100
  • ABC-XY-102
  • ABCXY1-0102

Wenn ich diese sortiere, egal wie, dann kommt diese Reihenfolge raus (ascend)

  • ABC-XY-100
  • ABCXY1-0102
  • ABC-XY-102

A) Wieso?
B) Wie kann ich ihm das abgewöhnen?

Der scheint ohne die "-" zu sortieren.

Wenn die Strings statt "-" jeweils Leerzeichen oder "_" enthalten, dann funktioniert das ... !?

E.

Edit:
Dim l As New List(Of String)
l.Add("ABC-XY-102")  
l.Add("ABC-XY-100")  
l.Add("ABCXY1-0102")  
l.Sort()

MsgBox(l(0) & vbNewLine & _
       l(1) & vbNewLine & _
       l(2))

Content-Key: 331700

Url: https://administrator.de/contentid/331700

Printed on: April 18, 2024 at 13:04 o'clock

Mitglied: 132658
Solution 132658 Mar 09, 2017 updated at 16:05:45 (UTC)
Goto Top
Hi,
A) Wieso?
das liegt an der Reihenfolge wie .NET die Wertigkeit der Sonderzeichen beim Default IComparer einstuft. Per Default wird nach aktueller Culture sortiert, möchte man das nicht, sortiert man stattdessen nach Rang(ordinal).
http://stackoverflow.com/questions/11038398/how-does-net-sort-special-c ...
https://unicode-table.com/de/
B) Wie kann ich ihm das abgewöhnen?
c#
List<string> list = new List<string> {"ABCXY1-0102","ABC-XY-100", "ABC-XY-102"};  
list.Sort(StringComparer.Ordinal);
MessageBox.Show(String.Join("\r\n",list));  
Gruß schnappi
Member: emeriks
emeriks Mar 09, 2017 at 16:06:21 (UTC)
Goto Top
Ja nee is klar ....
Danke!
Member: atze187
atze187 Mar 13, 2017 at 07:39:24 (UTC)
Goto Top
Zitat von @132658:
B) Wie kann ich ihm das abgewöhnen?
c#

+1
Member: emeriks
emeriks Mar 13, 2017 at 18:08:52 (UTC)
Goto Top
Zitat von @atze187:

Zitat von @132658:
B) Wie kann ich ihm das abgewöhnen?
c#

+1
Was auch immer Du uns damit sagen willst ...
Member: atze187
atze187 Mar 14, 2017 at 09:55:40 (UTC)
Goto Top
C# statt VB. Ich hab neulich VB.NET-Code in C# überführen müssen. Das hat sich alles falsch angefühlt. Allein schon die Tatsache dass man sich nicht drüber streiten kann ob die öffnenden geschweiften Klammern auf die nächste Zeile gehören oder nicht.