【问题标题】:Filter strings containing a word in Flutter在 Flutter 中过滤包含单词的字符串
【发布时间】:2022-01-13 13:56:43
【问题描述】:

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

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

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

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

“这是一个漂亮动物的列表” - 不应该出现在结果中

【问题讨论】:

    标签: flutter dart search filter


    【解决方案1】:

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

    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')));
    

    【讨论】:

      【解决方案2】:

      这个问题已经用最简单的代码形式回答了。但我是用外行的方式来做的。

      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. 根据空格分割句子,得到每个单词。
      4. 使用数组检查句子的每个单词,是否从some开始
      5. 如果句子的任何单词是从 some 开始的,那么我从列表中删除了该句子

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-20
        • 1970-01-01
        • 1970-01-01
        • 2013-07-12
        相关资源
        最近更新 更多