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