【问题标题】:How to convert String index to character index in Dart如何在 Dart 中将字符串索引转换为字符索引
【发布时间】:2020-12-25 03:24:25
【问题描述】:

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

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

而且我知道family emoji(空格)后面的字符的String index是28,如何找到family emoji的第一个代码单元的String index?换句话说,我如何找到家庭表情符号的 UTF-16 编码单元的长度?

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

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

【问题讨论】:

  • family.length不是family在UTF-16编码单元中的长度吗?
  • @jamesdlin,是的,我这样写是为了使字符串更具可读性,但我想这是误导。我想知道的是如何找到一些任意未知字素簇的长度。

标签: flutter dart unicode grapheme-cluster


【解决方案1】:

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

【讨论】:

  • 我在理解 CharacterRange 的工作原理时遇到了一些麻烦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多