【问题标题】:Dart: Convert String representation of List of Lists to List of ListDart:将列表列表的字符串表示形式转换为列表列表
【发布时间】:2017-10-04 06:19:59
【问题描述】:

这与这里的问题相同:

How can I convert this string to list of lists?

但对于 Dart 而不是 python。我的目标(与其他问题一样)是采用如下字符串:

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]

但是想知道在 Dart 中是否有更好的方法,但在网上很难找到任何方法?

【问题讨论】:

    标签: dart


    【解决方案1】:

    您可以使用 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

    【讨论】:

    • 啊,这正是我正在尝试的。我现在看到我遇到的问题是我正在转换从 GUI 输入的文本。如果您尝试: var lists = JSON.decode('[[sometext],[122],[411]]');然后你得到一个错误,这一定是我遇到的问题。
    • 那是因为sometext' 需要引号才能成为有效的 JSON,但您的问题不包含文本,只包含数字 ;-)
    • 嘿,非常感谢!很抱歉忽略了最后一个答案 - 正忙于未能找到相同的解决方案!
    • 我相信现在是 json.decode(),而不是 JSON.decode()。
    • 谢谢。如果是"['[123]','[122]','[411]']" 呢?
    猜你喜欢
    • 2017-11-24
    • 1970-01-01
    • 2021-04-13
    相关资源
    最近更新 更多