2017-05-05 41 views
0

的名单,这是因为这里的同一个问题:飞镖:转换列表的列表的字符串表示要列出

How can I convert this string to list of lists?

但飞镖而不是蟒蛇。我的目标(如另一个问题)是采取如下字符串:

String stringRep = '[[123],[122],[411]]'; 

并将其转换为列表清单。我可以看到我将能够实现这一目标使用回答推荐的方法之一上面提到的,即:

str = "[[0,0,0],[0,0,1],[1,1,0]]" 
strs = str.replace('[','').split('],') 
lists = [map(int, s.replace(']','').split(',')) for s in strs] 

但却不知道是否有在达特一个更好的方法,奋力测量值的任何在线?

回答

2

您可以使用JSON解码器

import 'dart:convert'; 

... 

var lists = JSON.decode('[[123],[122],[411]]'); 

DartPad example

更新

final regExp = new RegExp(r'(?:\[)?(\[[^\]]*?\](?:,?))(?:\])?'); 
final input = '[[sometext],[122],[411]]'; 
final result = regExp.allMatches(input).map((m) => m.group(1)) 
    .map((String item) => item.replaceAll(new RegExp(r'[\[\],]'), '')) 
    .map((m) => [m]) 
    .toList(); 
print(result); 

DartPad example

+0

啊,这正是我努力。我现在看到,虽然我遇到的问题是我正在转换从GUI输入的文本。如果您尝试: var lists = JSON.decode('[[sometext],[122],[411]]'); 然后你得到一个错误,这肯定是我遇到的问题。 – SSS

+0

这是因为'sometext'需要引用是有效的JSON,但你的问题不包含文本,只有数字;-) –

+0

我更新了我的答案。 –

相关问题