В angular dart могу ли я найти индекс в списке строк на основе любой части многословного критерия

#dart

#dart

Вопрос:

В angular dart у меня есть список строк, который заполнен доступными группами и строкой поиска. Я хочу найти индекс в списке, который содержит любое целое слово строки поиска. В этом примере я бы хотел, чтобы он нашел индекс 0, потому что одно из слов в строке поиска «Клиент» появляется в одной из групп. Я знаю, что приведенный ниже код не будет работать, потому что он ищет весь текст поиска.

       List<String> groups = [];
      groups .add('Client Information');
      groups .add('User Information');
      groups .add('Activity Information');

      String searchtext = 'Client Customer';

      return groups.indexWhere((item) => item.contains(searchtext));
  

Ответ №1:

Вы можете динамически создавать регулярное выражение для поиска группы слов

 final regExp = RegExp('(${searchtext.replaceAll(' ', '|')})');
final index = groups.indexWhere(regExp.hasMatch);