我正在尝试从sqlite中的“文本列”进行基本的抓取,并将其处理为List<String>
模型中的字段。如果数据为空,那么我想将其设置为空列表[]
。但是,由于某种原因执行此操作时,我得到的列表看起来是空的,但实际上长度为1。要重新创建此问题,我使用以下内容简化了该问题。
String stringList = '';
List<String> aList = [];
aList = stringList.split(',');
print(aList.length);
为什么此打印1?它不应该返回0,因为其中没有带逗号的值吗?
最佳答案
这应该打印1。
在逗号上分割字符串时,您会发现字符串中逗号的所有位置,然后返回围绕这些字符串的列表。其中包括第一个逗号之前和最后一个逗号之后的字符串。
在输入不包含逗号的情况下,您仍然会找到初始字符串。
如果您的示例是:
String input = "451";
List<String> parts = input.split(",");
prtin(parts.length);
您可能希望零件是列表
["451"]
。这也是这里发生的情况,因为split函数不能将空部分与非空部分区分开。如果字符串中确实包含逗号(例如,字符串
","
),则拆分时会得到两个部分,在这种情况下,将分为两个空部分。通常,对于包含n个拆分模式匹配项的字符串,您将获得n + 1个部分。
关于list - Dart 列表计数在拆分空字符串时显示一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52159136/