dotnet / dotnet-api-docs

.NET API reference documentation (.NET 5+, .NET Core, .NET Framework)
https://docs.microsoft.com/dotnet/api/
Other
727 stars 1.56k forks source link

`StringSort` does not work as described in the docs #9014

Open ilonatommy opened 1 year ago

ilonatommy commented 1 year ago

.NET 7, Console App, but actually it happens for net6, net 5, net core 3.1 as well. The last dotnet that works as the docs is framework 4.7.2, so it looks like it's by design.

This is what docs claim to happen (see the comment in the end of the example): https://learn.microsoft.com/en-us/dotnet/api/system.globalization.compareoptions?view=net-7.0#examples

While this is what is happening:

Initially,
cant
bill's
coop
cannot
billet
can't
con
bills
co-op

After sorting without CompareOptions.StringSort:
bill's
billet
bills
can't
cannot
cant
co-op
con
coop

After sorting with CompareOptions.StringSort:
bill's
billet
bills
can't
cannot
cant
co-op
con
coop

Most probably there was copy-paste error. In case it is not by design, we need to fix it.

ghost commented 1 year ago

Tagging subscribers to this area: @dotnet/area-system-globalization See info in area-owners.md if you want to be subscribed.

Issue Details
.NET 7, Console App, but actually it happens for net6, net 5, net core 3.1 as well. The last dotnet that works as the docs is framework 4.7.2, so it looks like it's by design. This is what docs claim to happen (see the comment in the end of the example): https://learn.microsoft.com/en-us/dotnet/api/system.globalization.compareoptions?view=net-7.0#examples While this is what is happening: ``` Initially, cant bill's coop cannot billet can't con bills co-op After sorting without CompareOptions.StringSort: bill's billet bills can't cannot cant co-op con coop After sorting with CompareOptions.StringSort: bill's billet bills can't cannot cant co-op con coop ``` Most probably there was copy-paste error. In case it is not by design, we need to fix it.
Author: ilonatommy
Assignees: -
Labels: `doc-bug`, `area-System.Globalization`
Milestone: -
tarekgh commented 1 year ago

This is a difference in the collation behavior between ICU and NLS. Mostly how the quotation is sorted.

NLS result

After sorting without CompareOptions.StringSort: billet, bills, bill's, cannot, cant, can't, con, coop, co-op

while ICU Result

After sorting without CompareOptions.StringSort: bill's, billet, bills, can't, cannot, cant, co-op, con, coop