DotNet String Sortierung
Hi,
habe hier im .Net einen komischen Effekt beim Sortieren von Strings.
Gegeben sind 3 Strings (in Wunsch-Reihenfolge)
Wenn ich diese sortiere, egal wie, dann kommt diese Reihenfolge raus (ascend)
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:
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))
5 Antworten
- LÖSUNG 132658 schreibt am 09.03.2017 um 16:50:38 Uhr
- LÖSUNG emeriks schreibt am 09.03.2017 um 17:06:21 Uhr
- LÖSUNG atze187 schreibt am 13.03.2017 um 08:39:24 Uhr
- LÖSUNG emeriks schreibt am 13.03.2017 um 19:08:52 Uhr
- LÖSUNG atze187 schreibt am 14.03.2017 um 10:55:40 Uhr
- LÖSUNG emeriks schreibt am 13.03.2017 um 19:08:52 Uhr
LÖSUNG 09.03.2017, aktualisiert um 17:05 Uhr
Hi,
http://stackoverflow.com/questions/11038398/how-does-net-sort-special-c ...
https://unicode-table.com/de/
Gruß schnappi
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));
LÖSUNG 14.03.2017 um 10:55 Uhr