如何在 Dart 中将字符串索引转换为字符索引

问题描述

如果我有一个这样的任意字符串:

final family = '\u{1F468}\u{200D}\u{1F469}\u{200D}\u{1F467}'; // ?‍?‍?
final myString = 'Let me introduce my $family to you.';

而且我知道家庭表情符号(空格)后字符的字符串索引28,我如何找到家庭表情符号的第一个代码单元的字符串索引?换句话说,如何在 UTF-16 代码单元中找到家庭表情符号的长度?

enter image description here

我之前问过 similar question,但那是在 characters 包出现之前。有什么办法可以将字形簇索引映射到字符串索引吗?

我问的原因是我想通过 Flutter TextField 中的字素簇以编程方式退格。

解决方法

似乎 String.characters 为您提供了每个元素一个字素簇的列表。只需使用文档 (https://pub.dev/documentation/characters/latest/characters/CharacterRange-class.html) 中描述的范围一次删除一个字符的内容。