【问题标题】:How to convert List<String> to String in flutter [duplicate]如何在颤动中将 List<String> 转换为 String [重复]
【发布时间】:2021-09-26 07:57:16
【问题描述】:

如何将列表转换为字符串

然后我如何在其他地方使用 _checked 字符串值

  List&lt;String&gt; _checked = [];

【问题讨论】:

  • 我似乎无法理解如何在我的场景中实现这一点
  • 也许您需要对您的问题进行更多解释。你将如何使用String 值?

标签: flutter dart


【解决方案1】:

join 方法用于此目的。数组元素被转换为字符串,然后粘合成一个,在参数join 中,您可以传递将在粘合部分之间的部分。

List<String> list = ["a", "b", "c"];
list.join() // 'abc';
list.join('|') // 'a|b|c'; // better for comparisons

其他方式 - 使用类:

import 'package:crypto/crypto.dart';
import 'package:convert/convert.dart';
import 'dart:convert';

class A {
  List<String> a;
  A(List<String> list): a = list; 
  
  @override
  String toString() {
    return a.join('|');
  }
  
  int get hashCode {
    var bytes = utf8.encode(a.toString());
    return md5.convert(bytes); a.toString().length;
    //return a.toString().length; // silly hash
  }
  
  bool operator ==(other) {
    String o = other.toString();
    return (o == a.join('|'));
  }
}

void main() {
  A _checked = A(['1', '2', '3']);
  A _other = A(['1', '2', '3']);
  A _next = A(['12', '3']);
  print(_checked == _other); // true
  print(_checked);           // 1|2|3
  print(_checked == _next);  // false
  print(_next);              // 12|3
}

是的,类是多余的,你可以只使用一个函数:

  String toString(List<String> a) {
    return a.join('|');
  }
  print(toString(_checked) == toString(_other)); // true
  print(toString(_checked));                     // 1|2|3
  print(toString(_checked) == toString(_next));  // false
  print(toString(_next));                        // 12|3

【讨论】:

  • 请用英文写下你的答案。
  • @Daniil 检查的实例成员无法在初始化程序 var checked=_checked.toString() 中访问
  • _checked.toString() 你需要吗?
  • 类方法是如此令人难以置信的矫枉过正,它所做的只是调用join。有什么比一开始就打电话给join 更好甚至更好的方法吗?
  • @Abion47,是的,我添加了另一个解决方案作为功能
【解决方案2】:

有很多方法。第一种方法是简单地调用列表中的toString

final list = ['a', 'b', 'c'];
final str = list.toString();

// str = "[a, b, c]"

另一种方法是使用join,它将使用可选的分隔符将所有字符串连接成一个字符串:

final list = ['a', 'b', 'c'];
final str = list.join('-');

// str = "a-b-c"

存在其他更专业的方法,但它们需要更多地了解您希望输出的外观。

【讨论】:

  • 被检查的实例成员无法在初始化程序中访问 var checked=_checked.toString();
  • @RishailSiddiqui 显示你在做什么。 checked 是普通变量吗?是成员变量吗?如果是成员变量,it matters where you're trying to initialize it.
  • @RishailSiddiqui 听起来你正试图在构造函数的初始化列表中做一些事情。您将无法使用这些方法执行此操作,因此请将代码放在构造函数主体中。
猜你喜欢
  • 2020-09-15
  • 1970-01-01
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 2013-08-26
  • 2019-07-28
  • 1970-01-01
相关资源
最近更新 更多