【问题标题】:Dart: sorting list with special charactersDart:带有特殊字符的排序列表
【发布时间】:2019-12-13 18:10:49
【问题描述】:

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

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

我不担心countryNames.data 中找不到的国家/地区——我只是将它们从显示的列表中过滤掉。问题是在英语中,

奥兰群岛

出现在前向排序列表的底部,而在法语等特殊字符泛滥的语言中,情况更糟。

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

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

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

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

    【讨论】:

    • 完美解决方案!甚至不知道排序时要担心的事情,直到看到排序不正确 lmao
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 2014-03-18
    相关资源
    最近更新 更多