gpt4 book ai didi

regex - Dart/Flutter 读写列表列表 - 为什么我无法使用索引号访问列表列表中的对象?

转载 作者:IT王子 更新时间:2023-10-29 07:00:29 26 4
gpt4 key购买 nike

我是 dart 的新手,我正在做我的第一个项目。我目前正在处理项目的存储方面的工作,在尝试访问以 .txt 格式编写的文件时遇到了困难。我正在尝试以 .txt 格式保存一个包含列表列表的文件。我使用 .writeAsString() 方法写入文件,将我的列表转换为字符串,以便将其保存为 .txt 文件。我使用以下代码读取文件并将其转换回列表列表。

    widget.storage.readData().then((String value) {
setState(() {
_state = value;
final regExp = new RegExp(r'(?:\[)?(\[[^\]]*?\])(?:\])?');

List<List<String>> result = regExp
.allMatches(_state)
.map((m) => m.group(1))
.map((String item) => item.replaceAll(new RegExp(r'[\[\],]'), ''))
.map((m) => [m])
.toList();

gamesList = result;

当我打印 gamesList 的值时,我得到以下信息:

    [[75.00% 75.00% No shots 75.00% No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots 75.00% 75.00% No shots 75.00% No shots No shots No shots No shots No shots], [100.00% No shots 100.00% No shots No shots No shots 100.00% No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots No shots 100.00% No shots 100.00% No shots No shots No shots 100.00% No shots No shots]]

虽然此列表似乎包含我最初保存的相同值,但我无法使用索引号访问这些值中的任何一个。例如,我希望能够说:

    print(gamesList[0][1]);

理论上这应该返回对象“75.00%”(引用上面打印语句的输出)。我注意到列表中缺少逗号,这也许就是我的代码无法按我希望的方式执行的原因。

最佳答案

您应该使用序列化库将 Dart 对象(列表的列表)转换为字符串,然后再将其转换回来。

Dartson 是一个选项:https://pub.dartlang.org/packages/dartson

例子:

import 'dart:io';
import 'package:dartson/dartson.dart';

void main() {

List<String> l1 = new List<String>();
l1.add("A");
l1.add("B");

List<String> l2 = new List<String>();
l2.add("X");
l2.add("Y");

List<List<String>> ll = new List<List<String>>();
ll.add(l1);
ll.add(l2);

var dson = new Dartson.JSON();

String filename = 'lists.txt';
new File(filename).writeAsStringSync(dson.encode(ll));

String s = new File(filename).readAsStringSync();
List<List<String>> deserializedLists = dson.decode(s, new List<List<String>>(), true);

}

关于regex - Dart/Flutter 读写列表列表 - 为什么我无法使用索引号访问列表列表中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51755863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com