Запретить совпадение String.Contains - PullRequest
0 голосов
/ 19 октября 2018

Я запускаю команду filter для объекта в kotlin и пытаюсь сопоставить результаты.До сегодняшнего дня я не осознавал, что пустая строка будет соответствовать любой строке в содержании запроса следующим образом:

var brandname = ""
var brandtofind = "tide"
var result = brandtofind.contains(brandname) //results in true

Это проблематично, когда вы пытаетесь сопоставить записи, где строка может быть пустой, как показано ниже:

var candidates = this.filter{ product -> 
                  text.contains(product.name) ||
                  text.contains(product.brandname) //brandname often empty

Я получаю огромное количество ложных срабатываний на продуктах без фирменного знака.Как изменить запрос, чтобы он совпадал только при наличии истинного совпадения?

1 Ответ

0 голосов
/ 19 октября 2018

Вы можете добавить чек для product.brandname.isNotBlank(), который является расширенной версией isNotEmpty()

var candidates = this.filter{ product -> 
                  text.contains(product.name) ||
                  (product.brandname.isNotBlank() && text.contains(product.brandname))}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...