我尝试从sqlite中的一个文本列中进行一个基本的抓取,并将其处理为List<String>
模型中的一个字段。如果数据为空,那么我想将其设置为一个空列表[]
。然而,当我出于某种原因这样做时,我得到了一个看起来为空但实际长度为1的列表。为了重现这个问题,我使用以下方法简化了问题。
String stringList = '';
List<String> aList = [];
aList = stringList.split(',');
print(aList.length);
为什么打印1?因为没有带逗号的值,它不应该返回0吗?
2条答案
按热度按时间sqxo8psd1#
这应该打印1。
当你用逗号分割字符串时,你会找到逗号在字符串中的所有位置,然后返回一个字符串列表,其中包括第一个逗号之前和最后一个逗号之后的字符串。如果输入不包含逗号,你仍然会找到初始字符串。
如果你的例子是:
你可能会认为parts是列表
["451"]
,这里也是这样,因为split函数不能区分空的和非空的。如果一个字符串包含逗号,比如字符串
","
,在拆分时会得到两个部分,在本例中是两个空的部分,一般来说,如果一个字符串包含n个匹配的拆分模式,则会得到n+1个部分。ryevplcw2#
如果您想从拆分结果中排除空部分(包括空字符串本身是否被拆分),您可以执行如下操作:
如果
input == ''
,则结果将为[]
。