Flutter 在Dart中测试unicode grapheme群集相等性?
像“é”这样的unicode字符可以通过两种方式表示为UTF16字符串(Dart的本机实现):Flutter 在Dart中测试unicode grapheme群集相等性?,flutter,dart,Flutter,Dart,像“é”这样的unicode字符可以通过两种方式表示为UTF16字符串(Dart的本机实现): “\u00e9” “\u0065\u0301”(e+组合变音符号) 由于它们在内部是不同的,测试字符串或符文是否相等将表明它们不相等: print('\u00e9' == '\u0065\u0301'); //false print('é' == 'é'); //false, if copy/pasted from the two different representations print('
print('\u00e9' == '\u0065\u0301'); //false
print('é' == 'é'); //false, if copy/pasted from the two different representations
print('\u00e9'.runes == '\u0065\u0301'.runes); //false
print('\u00e9'.characters == '\u0065\u0301'.characters); //false
很公平——这就是Dart处理字符串的方式所期望的。但我原以为角色包应该处理这样的问题。然而,在比较字符时,它仍然不相等:
print('\u00e9' == '\u0065\u0301'); //false
print('é' == 'é'); //false, if copy/pasted from the two different representations
print('\u00e9'.runes == '\u0065\u0301'.runes); //false
print('\u00e9'.characters == '\u0065\u0301'.characters); //false
…即使它将两者都识别为单个字符(即characters.length为1)。因此,我不确定在考虑构建这些grapheme集群的多种方法时,是否有一种方法来测试平等性。有什么想法吗?太晚了,但我认为您需要的是Unicode等价/规范化表单。1.(维基百科):2。(unicode.org):