You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中从字符串列表排除含指定子串的元素?

Dart优雅实现排除包含指定子串的列表元素

需求说明

需要从字符串列表中排除包含另一子串列表中任意元素的项,得到剩余元素的结果列表。原始数据如下:

var original_list = ['cigar', 'rebut', 'focal', 'blush', 'naval', 'bench'];
var exclusion_list = ['e', 'f'];
var result_list = [];

在Python中可以这样实现:

for item in original_list:
    if not any(letter in item for letter in exclusion_list):
        result_list.append(item)

Dart优雅解决方案

Dart里可以用where结合any的函数式写法,和Python的逻辑完全对应,简洁又优雅:

void main() {
  var original_list = ['cigar', 'rebut', 'focal', 'blush', 'naval', 'bench'];
  var exclusion_list = ['e', 'f'];
  
  var result_list = original_list
      .where((item) => !exclusion_list.any((subStr) => item.contains(subStr)))
      .toList();
  
  print(result_list); // 输出: [cigar, blush, naval]
}

代码解释

  • where方法遍历原始列表,筛选出符合条件的元素,返回一个Iterable
  • exclusion_list.any((subStr) => item.contains(subStr)):判断当前元素是否包含排除列表中的任意子串,只要有一个匹配就返回true
  • 加上!取反,得到不包含任何排除子串的元素,最后用toList()把Iterable转为List类型

如果习惯循环写法,也可以简化成更简洁的版本,避免嵌套循环的繁琐:

void main() {
  var original_list = ['cigar', 'rebut', 'focal', 'blush', 'naval', 'bench'];
  var exclusion_list = ['e', 'f'];
  var result_list = <String>[];
  
  for (var item in original_list) {
    if (!exclusion_list.any((sub) => item.contains(sub))) {
      result_list.add(item);
    }
  }
  
  print(result_list);
}

内容的提问来源于stack exchange,提问作者UniquelyAverage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:30:49