【发布时间】:2019-10-13 03:43:08
【问题描述】:
我正在使用 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 编程语言反转可能包含代理对的字符串?
【问题讨论】:
标签: string flutter unicode dart surrogate-pairs