Flutter/Dart - 将逗号分隔的字符串拆分为3个变量?

12

我有一个用逗号分隔的标签字符串, 例如 "grubs, sheep, dog"。我该如何将其分成三个变量?我尝试过;

var splitag = tagname.split(",");
var splitag1 = splitag[0];
var splitag2 = splitag[1];
var splitag3 = splitag[2];

但是如果其中任何一个变量为空,它就会抛出一个错误。所以我尝试了:

String splitagone = splitag1 ?? "";
String splitagtwo = splitag2 ?? "";
String splitagthree = splitag3 ?? "";  

但我收到了相同的错误。那么还有其他方法可以检查标签是否为null并使用变量吗?

if(tagname != null) {
      tagname.split(',').forEach((tag) {       
      //  something?    
      });
    }

同时检查 tagname.isNotEmpty 和标签是否存在。 - Blasanka
4个回答

17

您可以使用Map,它更适合具有动态长度的变量:

final tagName = 'grubs, sheep';
final split = tagName.split(',');
final Map<int, String> values = {
  for (int i = 0; i < split.length; i++)
    i: split[i]
};
print(values);  // {0: grubs, 1:  sheep}

final value1 = values[0];
final value2 = values[1];
final value3 = values[2];

print(value1);  // grubs
print(value2);  //  sheep
print(value3);  // null

7
你可以使用一个列表,并逐一添加项目。
final names= 'first, second';
final splitNames= names.split(',');
List splitList;
  for (int i = 0; i < split.length; i++){
    splitList.add(splitNames[i]);
}

最终的名字= '第一个,第二个'; 最终的分割名字= 名字.split(','); 列表 分割列表; for (int i = 0; i < 分割名字.length; i++){ 分割列表.add(分割名字[i]); } - adarsh

1
清理字符串分割后再使用它们:
final names= 'first, second, 3';
values = names.split(",").map((x) => x.trim())).where((element) => element.isNotEmpty).toList()

final value1 = values[0];
final value2 = values[1];
final value3 = values[2];

0
如果你只是想检查tagname是否为空,可以使用tagname?.split()。但是当你得到值后,你还需要这样做,否则你将会得到一个null异常:splitTag?[] ?? "" 如果你想返回一个空字符串而不是null,那么??是可选的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接