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

问题描述 投票:1回答:1

我想使用icu-dotnet库为缅甸整理排序字符串列表。

它为myanmar创建collat​​or时抛出异常。

var cultureInfo = new CultureInfo("my-MM");
using (var collator = Collator.Create(cultureInfo.Name))
{
    int compareResult = collator.Compare("သန်တ", "သန္တ");
}
c# .net-core icu
1个回答
1
投票

这会抛出ArgumentException,因为ICU中的my-MM没有预定义的排序规则。但是,我有规则,所以以下方法可行:

var cultureInfo = new CultureInfo("my");

或者你可以通过传递FallBackAllowed来允许回退:

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));
}
© www.soinside.com 2019 - 2024. All rights reserved.