作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我担心我想在这里重新发明轮子。我将对象放入我的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,这样可以更轻松地进行编码/解码,并且没有使用会给您带来麻烦的字符的风险。
,
,则可以像这样做出一个天真的解决方案:
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/
我是一名优秀的程序员,十分优秀!