string - 如何在 Dart 中反转包含代理对的字符串?

标签 string flutter unicode dart surrogate-pairs

我正在使用 Dart 来研究算法,并且当我实际上遵循 TDD 时,我意识到我的代码有一些限制。

作为面试问题的一部分,我试图反转字符串,但无法正确反转代理对。

const simple = 'abc';
const emoji = '🍎🍏🐛';
const surrogate = '👮🏽‍♂️👩🏿‍💻';

String rev(String s) {
    return String.fromCharCodes(s.runes.toList().reversed);
}

void main() {
    print(simple);
    print(rev(simple));
    print(emoji);
    print(rev(emoji));
    print(surrogate);
    print(rev(surrogate));
}

输出:

abc
cba
🍎🍏🐛
🐛🍏🍎
👮🏽‍♂️👩🏿‍💻
💻‍🏿👩️♂‍🏽👮

您可以看到简单的表情符号已正确反转,因为我使用的是 runes 而不是简单地执行 s.split('').toList().reversed.join (''); 但代理对反转不正确。

如何使用 Dart 编程语言反转可能包含代理项对的字符串?

最佳答案

反转字符串时,必须对字素进行操作,而不是字符或代码单元。使用grapheme_splitter .

关于string - 如何在 Dart 中反转包含代理对的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58360414/

相关文章:

ListView 不在定位的小部件中滚动

flutter - 如何在启用 nullsafety 的情况下从 swagger json 生成 dart 客户端?

python - 当存在 unicode 数据时,Json 解码器不一致

java - 使用 PDFTextStream 从 PDF 文件中提取僧伽罗语字符

python - 如何在 Python 中使用 unicode

python - 如何将字符串输入作为整数参数传递?

c++ - 什么时候函数应该使用 cstrings 而不是字符串? (C++)

dart - Flutter:如何使用 JSON 数据创建数组

android - 如何将以下代码分解为android中的各个类

sql-server - 存储过程将希伯来字符插入 NVARCHAR 列,但 SELECT 显示 "?"