如何映射Dart中字符串中的每个字符?

mca*_*dre 12 string list character map dart

我没有看到Dart字符串被视为字符列表.我假设我必须使用for循环,这将是蹩脚的.

Evi*_*n1_ 24

您还可以使用split 方法生成一个List字符。

input.split('').forEach((ch) => print(ch));
Run Code Online (Sandbox Code Playgroud)


Ced*_*edX 18

另一种实现(使用基本多语言平面之外的字符):

"A string".runes.forEach((int rune) {
  var character=new String.fromCharCode(rune);
  print(character);
});
Run Code Online (Sandbox Code Playgroud)

  • 符文……感觉很神秘 (30认同)
  • 从 Dart 2.7.0 开始,您可以使用包 `characters`:https://pub.dev/packages/characters。 (3认同)
  • `String.codeUnits` 仅处理 UTF-16 代码点,而 `String.runes` 处理 Unicode 代码点(UTF-8、UTF-16、UTF-32)。一个字符可以由 2 个 UTF-16 代码点(即代理对)表示,但只能由 1 个符文表示。 (2认同)

Lar*_*ann 13

不幸的是,字符串目前不可迭代,所以你必须像这样使用for循环

for(int i=0; i<s.length; i++) {
  var char = s[i];
}
Run Code Online (Sandbox Code Playgroud)

请注意,Dart没有字符类,因此string [index]将返回另一个字符串.

  • 谢谢!嗯,`string.charCodeAt(index)`可以解决问题。 (2认同)
  • 警告:对于一些罕见的外语,循环无法按预期工作。`length` 属性和 `[]` 运算符指的是 UTF-16 代码单元,而不是字符。某些字符可以使用 2 个 UTF-16 代码单元。 (2认同)

Ryd*_*yde 8

带有 Flutter字符类

import 'package:flutter/material.dart';
var characters = aString.characters;
Run Code Online (Sandbox Code Playgroud)

  • Flutter 链接是 [`package:characters/characters.dart`](https://pub.dev/documentation/characters/latest/) 的重新导出,无需 Flutter 也可以使用。这是迭代一般 Unicode 文本的推荐方法。 (2认同)