在 Flutter 中过滤包含单词的字符串

Filter strings containing a word in Flutter

我想过滤列表并删除不包含以特定字符串开头的单词的字符串。

Fe.: 搜索以“some”开头的词

“这是一些动物的列表”- 应该在结果中

“这是一个类似于动物的列表”- 应该在结果中

“这是一份帅气动物的名单”- 不应该出现在结果中

可能不是最高效的,但除非您对数百万项执行此操作,否则应该没有任何问题:

final l = [
  'That is a list of some animals',
  'That is a list of something like animals',
  'That is a list of handsome animals',
];

l.retainWhere((str) => str.split(' ').any((word) => word.startsWith('some')));

问题已经以最简单的代码形式得到了解答。不过我是门外汉。

final list = [
  'That is a list of some animals',
  'That is a list of something like animals',
  'That is a list of handsome animals',
];
  
for(var i = 0 ; i < list.length ; i++){
  var sentence = list[i].split(' ');
  bool found = false;

  for(var j = 0 ; j < sentence.length ; j++){    
    if (sentence[j].startsWith('some')){
      found = true;
    }
  }

  if(!found){
    list.removeAt(i);
    found = false;
  }
}
  1. 列表中存储了三个句子。
  2. 使用循环获取每个句子。
  3. 在space的基础上拆分句子,得到每个词。
  4. 用数组检查句子的每个单词,是否从some
  5. 开始
  6. 如果句子中的任何单词是从 some 开始的,那么我从列表中删除了那个句子