将List <int>转换为Dart中的String?

Tow*_*wer 10 dart

我读了一个文件并得到了一个整数列表.对于我的大多数工作,这是我想要的,但在一个案例中,我还需要将一些转换List<int>成一个String.

更具体地说,我想用UTF-8编码字符串.

这就是我刚试过的:

var decoder = new Utf8Decoder(figures);
print(decoder.decodeRest());
Run Code Online (Sandbox Code Playgroud)

但我得到的只是一个整数列表.

Ale*_*lex 15

String.fromCharCodes(List<int> charCodes) 可能就是你要找的东西.

  List<int> charCodes = const [97, 98, 99, 100];
  print(new String.fromCharCodes(charCodes));
Run Code Online (Sandbox Code Playgroud)

  • 这不是正确的答案,因为这会破坏任何非 ASCII 字符(例如,变音符号、表情符号等)。正确答案应该使用`utf8.decode()` (3认同)
  • @GünterZöchbauer [不,不是。](https://api.dartlang.org/stable/2.2.0/dart-core/String/String.fromCharCodes.html) (2认同)

Lar*_*ann 5

如前所述String.fromCharCodes(List<int> charCodes),如果要将Unicode字符转换为字符串,可能会寻找什么。但是,如果您只想将列表合并为一个字符串,则可以使用Strings.join(List<String> strings, String separator)

Strings.join([1,2,3,4].map((i) => i.toString()), ","))  // "1,2,3,4"
Run Code Online (Sandbox Code Playgroud)


Ced*_*edX 5

您可以使用提供UTF-8编解码器的dart:convert库:

import 'dart:convert';

void main() {
  List<int> charCodes = [97, 98, 99, 100];
  String result = UTF8.decode(charCodes);
  print(result);
}
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。对于长字符串,所有其他解决方案都非常慢。 (2认同)