Ошибка Flutter String.contains(substring) при наличии пробела

#android #ios #flutter #dart

#Android #iOS #flutter #dart

Вопрос:

Использование String.contains (substring) для создания списка из другого завершается ошибкой, когда в моем вводе есть пробел.

Вот мой код :

 List<String> finalSuggestions = suggestions.where((i) => i.contains(new RegExp(pattern,caseSensitive:false, unicode: true))).toList();
  

As suggestions — это список строк, а pattern — пользовательский ввод. все работает нормально, если пользователь не добавляет пробел в строку, которую он вводит. finalSuggesions становится нулевым. else .. пока pattern это всего лишь одно слово, все в порядке.

Комментарии:

1. Как насчет того, чтобы стереть все пробелы перед запуском «предложений. где’?

2. Если ни одно из ваших предложений не содержит пробела, то имеет смысл, что пробел в шаблоне не приведет к совпадению предложений. В чем именно заключается ваш вопрос здесь?

3. во всех моих предложениях есть пробел между 2 словами .. но когда пользователь заканчивает 1-е слово, нажмите пробел .. результат показывает примечание!!

Ответ №1:

вам не нужно использовать RegExp , потому что pattern строка и suggestions список строк.

 List<String> finalSuggestions = suggestions.where((i) => i.contains(pattern)).toList();
  

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

Комментарии:

1. Пробел не является специальным символом, и даже если бы это было так, специальные символы не нужно экранировать, когда они поступают из пользовательского ввода.

2. Теперь ваш код не будет компилироваться, потому что pattern.toString это метод, и его нужно вызывать с помощью () . Несмотря на это, pattern это уже строка, поэтому вызов toString для нее избыточен.