用户提交了这些奇怪的字符。如何将它们与Dart中的普通文本沿着排序?
𝔦𝔠𝔦𝔞𝔩𝔞 𝓕𝓪𝓴𝓷𝓬𝓻𝓪 𝗺𝗹𝗲𝗖𝗹𝗮𝗿𝗮 𝙖𝙨𝙡𝙖𝙜𝙖𝙈𝙮 𝖧𝗋𝗂𝖾 𝑮𝒂𝒍𝒍𝒆𝒂 𝐿𝑢𝑛𝑎 𝐃𝐡𝐢𝐚 𝕠ℝ𝕒𝕥𝕧𝕒𝕠𝕜𝕠
旧版b.name.toLowerCase().compareTo(a.name.toLowerCase());不起作用
b.name.toLowerCase().compareTo(a.name.toLowerCase());
z31licg01#
好吧,一个好的开始可能是查看ES6 String.prototype.normalize()函数的内部实现。有趣的是,它只在兼容性分解模式下工作-即。NFKC或NFKD。
String.prototype.normalize()
for (const weirdString of [ '𝔦𝔠𝔦𝔞𝔩𝔞', '𝓕𝓪𝓴𝓷𝓬𝓻𝓪', '𝗺𝗹𝗲𝗖𝗹𝗮𝗿𝗮', '𝙖𝙨𝙡𝙖𝙜𝙖𝙈𝙮', '𝖧𝗋𝗂𝖾', '𝑮𝒂𝒍𝒍𝒆𝒂', '𝐿𝑢𝑛𝑎', '𝐃𝐡𝐢𝐚', '𝕠ℝ𝕒𝕥𝕧𝕒𝕠𝕜𝕠', ]) {console.log(weirdString.normalize('NFKC'))}
无论如何,也许Dart中有一个翻译,或者如果你在Web上运行,你可以使用'dart:js'库,或者你可以在V8引擎中找到实现(尽管它可能是C语言)。
1条答案
按热度按时间z31licg01#
好吧,一个好的开始可能是查看ES6
String.prototype.normalize()
函数的内部实现。有趣的是,它只在兼容性分解模式下工作-即。NFKC或NFKD。
无论如何,也许Dart中有一个翻译,或者如果你在Web上运行,你可以使用'dart:js'库,或者你可以在V8引擎中找到实现(尽管它可能是C语言)。