飞镖:带有特殊字符的排序列表



我想按本地化的国家/地区名称对 Dart 中的国家/地区列表进行排序。这就是我的做法:

final countryNames = CountryNames.of(context);
_countries.sort((a, b) => 
  (countryNames.data[a.isoCode.toUpperCase()] ?? "").compareTo(
    countryNames.data[b.isoCode.toUpperCase()] ?? ""));

我不担心在countryNames.data中找不到的国家 - 我只是从显示的列表中过滤掉这些国家。问题是在英语中,

奥兰群岛

出现在正向排序列表的底部,在法语和其他特殊字符激增的语言中,情况更糟。

有没有一种惯用的方法在 Dart 中对字符串进行排序,以便更合乎逻辑地处理特殊字符?

您必须在常规字符和带有变音符号的字符之间创建映射,并在比较中使用它,以便将"奥兰群岛"视为"奥兰群岛"以进行比较。

看起来其他人已经这样做了,并将其作为一个包发布:https://pub.dev/packages/diacritic

最新更新