#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
для нее избыточен.