使用 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));
}
我想使用 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:
允许回退到 myusing (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));
}