【问题标题】:Dart remove square brackets and add single quotation markDart删除方括号并添加单引号
【发布时间】:2020-07-14 13:58:58
【问题描述】:

我有一个从数据库中提取的字符串列表

[name 1, name2, name3, ...]

我正在尝试将其转换为:

'name 1', 'name2', 'name3', '...'

到目前为止还没有成功。 我获取数据的方法。该方法很好,因为我事先将它用于代码的其他部分。

  Future<List<String>> getNames() async {
    var url = _api + "get_names.php?key=" + _key;
    http.Response response = await http.get(url);
    var resp = jsonDecode(response.body);
    return resp.map<String>((m) => m['names'] as String).toList();
  }

列表作为字符串从数据库中提取。

基本上,我正在使用表单生成器代码的一部分,它使用 initialValue 作为动态。 所以如果我设置 initialValue: [widget.names] 并且 widget.names 包含 'name1','name2' 就可以了 如果它是一个字符串列表,但它当然需要单引号或双引号并用逗号分隔。

谢谢

【问题讨论】:

  • 您从 db 获得的响应格式不正确。它应该返回类似['name 1','name 2','...']

标签: flutter dart


【解决方案1】:
void main() {
  final input = '[name 1, name2, name3, ...]';
  final removedBrackets = input.substring(1, input.length - 1);
  final parts = removedBrackets.split(', ');
  
  var joined = parts.map((part) => "'$part'").join(', ');
  
  print(joined);
}

使用:https://api.flutter.dev/flutter/dart-core/String/split.html

打印:

'name 1', 'name2', 'name3', '...'

也就是说...也许您应该找到一种更好的方法来获取数据。也许作为 Json 或其他东西,所以你不必重新发明序列化。例如,如果“名称 1”中有逗号,会发生什么?还是说是d'Artagnan

【讨论】:

  • 你是对的,但名称中不会有逗号等。我们没有那种名称,它将在输入字段中被禁用。谢谢,这很好用
  • 给粗心的人(比如我)的注意事项。在示例中,输入已经是一个字符串。我必须先将列表转换为字符串,所以在一行中尝试了这个String output = mylist.toString().substring(1, mylist-1) ...但当然字符串的长度比它所组成的列表的长度大得多。当输出字符串太短时会引起轻微的混淆,即使当我打印列表时它显然有 10 个项目长
猜你喜欢
  • 2011-05-22
  • 1970-01-01
  • 2018-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 2017-04-20
  • 1970-01-01
相关资源
最近更新 更多