flutter Dart中的非ASCII字符排序

bvk5enib  于 2023-06-30  发布在  Flutter
关注(0)|答案(1)|浏览(115)

用户提交了这些奇怪的字符。如何将它们与Dart中的普通文本沿着排序?

𝔦𝔠𝔦𝔞𝔩𝔞
𝓕𝓪𝓴𝓷𝓬𝓻𝓪
𝗺𝗹𝗲𝗖𝗹𝗮𝗿𝗮
𝙖𝙨𝙡𝙖𝙜𝙖𝙈𝙮
𝖧𝗋𝗂𝖾
𝑮𝒂𝒍𝒍𝒆𝒂
𝐿𝑢𝑛𝑎
𝐃𝐡𝐢𝐚
𝕠ℝ𝕒𝕥𝕧𝕒𝕠𝕜𝕠

旧版b.name.toLowerCase().compareTo(a.name.toLowerCase());不起作用

z31licg0

z31licg01#

好吧,一个好的开始可能是查看ES6 String.prototype.normalize()函数的内部实现。
有趣的是,它只在兼容性分解模式下工作-即。NFKC或NFKD。

for (const weirdString of [
  '𝔦𝔠𝔦𝔞𝔩𝔞',
  '𝓕𝓪𝓴𝓷𝓬𝓻𝓪',
  '𝗺𝗹𝗲𝗖𝗹𝗮𝗿𝗮',
  '𝙖𝙨𝙡𝙖𝙜𝙖𝙈𝙮',
  '𝖧𝗋𝗂𝖾',
  '𝑮𝒂𝒍𝒍𝒆𝒂',
  '𝐿𝑢𝑛𝑎',
  '𝐃𝐡𝐢𝐚',
  '𝕠ℝ𝕒𝕥𝕧𝕒𝕠𝕜𝕠',
]) {console.log(weirdString.normalize('NFKC'))}

无论如何,也许Dart中有一个翻译,或者如果你在Web上运行,你可以使用'dart:js'库,或者你可以在V8引擎中找到实现(尽管它可能是C语言)。

相关问题