我正在使用 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/