Dart - 使用列表中包含的元素拆分字符串

Dart - split a string with elements contained in a list

我在编码和 Dart 方面经验不足。 我如何从一个字符串和一个列表(其中包含部分字符串)开始将字符串拆分为列表中的部分。

我试着更好地解释自己:

这是我的输入:

void main() {
  String text = 'Hello I am Gabriele!';
  List ErrList = ['Hello', 'I'];
}

这是我想要的输出:

['Hello', ' ', 'I', ' am Gabriele']

希望有人能帮助我。 谢谢:)

我不知道你是否真的需要列表中有空 space,但如果你想在列表中有 space,你可以更正我的示例。

void main() {
  String text = 'Hello I am Gabriele!';
  List<String> errList = ['Hello', 'I'];
  
  // `#` uses as separator.
  var a = text
      .split(' ')
      .map((e) => errList.contains(e) ? '$e#' : e)
      .join(' ')
      .split('#');

  print(a); // [Hello,  I,  am Gabriele!]
  print(a.join()); // Hello I am Gabriele!
}

根据您的要求:

void main() {
  String text = 'Hello I am Gabriele!';
  // Note: an empty space will be added after the objects except for the last one.
  // Order is important if you want the right results.
  List<String> errList = ['Hello', 'I'];

  var result = text
      .split(' ')
      .map((e) => errList.contains(e) ? e + '#' : e)
      .join(' ')
      .split('#')
      .expand((e) {
    if (errList.contains(e.trim()) && !e.contains(errList.last)) return [e, ' '];
    if (e.contains(errList.last)) return [e.trim()];
    return [e];
  }).toList();

  print(result); // [Hello,  , I,  am Gabriele!]
}