Дарт убирает квадратные скобки и добавляет одинарные кавычки - PullRequest
0 голосов
/ 14 июля 2020

У меня есть список строк, извлеченных из базы данных в виде строки

[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();
  }

список извлекается из базы данных в виде строки.

В основном я использую часть кода formbuilder который использует initialValue как динамический c. поэтому, если я установил initialValue: [widget.names], а widget.names содержит 'name1', 'name2', это нормально, если это список строк, но он, конечно, должен быть в одинарных или двойных кавычках и разделен запятой.

Спасибо

1 Ответ

0 голосов
/ 14 июля 2020
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" есть запятая? Или скажем это д'Артаньян ?

...