我想使用icu-dotnet库为缅甸整理排序字符串列表。
它为myanmar创建collator时抛出异常。
var cultureInfo = new CultureInfo("my-MM");
using (var collator = Collator.Create(cultureInfo.Name))
{
int compareResult = collator.Compare("သန်တ", "သန္တ");
}
这会抛出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));
}