Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在Dart中测试unicode grapheme群集相等性?_Flutter_Dart - Fatal编程技术网

Flutter 在Dart中测试unicode grapheme群集相等性?

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('

像“é”这样的unicode字符可以通过两种方式表示为UTF16字符串(Dart的本机实现):

  • “\u00e9”
  • “\u0065\u0301”(e+组合变音符号)
  • 由于它们在内部是不同的,测试字符串或符文是否相等将表明它们不相等:

    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):