gpt4 book ai didi

sql - Flutter如何将SQFL数据库的编码为字符串的列表简洁地转换回列表?

转载 作者:行者123 更新时间:2023-12-03 04:52:16 25 4
gpt4 key购买 nike

我担心我想在这里重新发明轮子。我将对象放入我的SQFL数据库中:
https://pub.dev/packages/sqflite

一些对象字段是整数列表,其他是字符串列表。我将这些编码为纯字符串,以放置在SQFL数据库的TEXT字段中。

在某些时候,我将不得不将它们退回去,我在Google上找不到任何东西,这令人惊讶,因为这在SQFL中必定是非常普遍的情况

我已经开始对“解码”进行编码,但这是菜鸟 Dart 。我周围应该有什么表演 Actor 可以使用吗?

包含的代码可以证明我并不完全懒惰,无需查找,边缘情况会使它失败。

  List<int> listOfInts = new List<int>();

String testStringOfInts = "[1,2,4]";
List<String> intermediateStep2 = testStringOfInts.split(',');

int numListElements = intermediateStep2.length;

print("intermediateStep2: $intermediateStep2, numListElements: $numListElements");
for (int i = 0; i < numListElements; i++) {
if (i == 0) {
listOfInts.add(int.parse(intermediateStep2[i].substring(1)));
continue;
}
else if ((i) == (numListElements - 1)) {
print('final element: ${intermediateStep2[i]}');
listOfInts.add(int.parse(intermediateStep2[i].substring(0, intermediateStep2[i].length - 1)));
continue;
}
else listOfInts.add(int.parse(intermediateStep2[i]));
}
print('Output: $listOfInts');

/* DECODING LISTS OF STRINGS */
String testString = "['element1','element2','element23']";
List<String> intermediateStep = testString.split("'");
List<String> output = new List<String>();

for (int i = 0; i < intermediateStep.length; i++) {
if (i % 2 == 0) {
continue;
} else {
print('adding a value to output: ${intermediateStep[i]}');
//print('value is a: ${(intermediateStep[i]).runtimeType}');
output.add(intermediateStep[i]);
}
}
print('Output: $output');
}

最佳答案

对于整数,您可以进行如下解析:

void main() {
print(parseStringAsIntList("[1,2,4]")); // [1, 2, 4]
}

List<int> parseStringAsIntList(String stringOfInts) => stringOfInts
.substring(1, stringOfInts.length - 1)
.split(',')
.map(int.parse)
.toList();

我需要有关在某些特殊情况下如何保存字符串的更多信息,例如它们是否包含 ,和/或 ',因为这将更改解析的方式。但是,如果两个字符在字符串中都是有效的(尤其是 ,),我建议您将存储格式更改为JSON,这样可以更轻松地进行编码/解码,并且没有使用会给您带来麻烦的字符的风险。

但是,如果我们知道每个String不包含 ,,则可以像这样做出一个天真的解决方案:
void main() {
print(parseStringAsStringList("['element1','element2','element23']"));
// [element1, element2, element23]
}

List<String> parseStringAsStringList(String stringOfStrings) => stringOfStrings
.substring(1, stringOfStrings.length - 1)
.split(',')
.map((string) => string.substring(1, string.length - 1))
.toList();

关于sql - Flutter如何将SQFL数据库的编码为字符串的列表简洁地转换回列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61186322/

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