使用 icu-dotnet 库对字符串列表进行缅甸排序

Sort list of strings using icu-dotnet library for Myanmar collation

我想使用 icu-dotnet 库对字符串列表进行缅甸排序。

为缅甸创建整理器时抛出异常。

var cultureInfo = new CultureInfo("my-MM");
using (var collator = Collator.Create(cultureInfo.Name))
{
    int compareResult = collator.Compare("သန်တ", "သန္တ");
}

这将引发 ArgumentException,因为 ICU 中没有为 my-MM 预定义的排序规则。但是,my 有规则,因此以下内容有效:

var cultureInfo = new CultureInfo("my");

或者您可以通过传递 FallBackAllowed:

允许回退到 my
using (var collator = Collator.Create(cultureInfo.Name, Collator.Fallback.FallbackAllowed))
{
}

您可以通过查看 icu4c source tree 查看预定义的整理器。

对字符串列表进行排序的完整代码:

var list = new List<string> {"foo", "baz", "bar", "zoo"};

using (var collator = Collator.Create("en-US"))
{
    list.Sort((s1, s2) => collator.Compare(s1, s2));
}