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

时间:2019-03-28 09:09:45

标签: c# .net-core icu

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

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

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

1 个答案:

答案 0 :(得分:1)

这会引发 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));
}