NSP Предикат строки соответствия по словам - PullRequest
0 голосов
/ 04 марта 2019

У меня есть массив строк, как показано ниже:

["Milk","Milkshake","Milk Shake","MilkCream","Milk-Cream"]

, и если я ищу "молоко", результаты должны быть ["Milk","Milk Shake","Milk-Cream"], то есть поиск по словам.

С предикатомкак

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tagName CONTAINS[c] %@",containSearchTerm];

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

1 Ответ

0 голосов
/ 04 марта 2019

Вам необходим «поиск по регулярному выражению» для сопоставления с границами слова, который выполняется с помощью «MATCHES» в предикате.Вот пример (по существу, переведенный из NSP предиката с основными данными, искомое слово с границами в строковом атрибуте для Swift):

let searchTerm = "milk"
let pattern = ".*\\b\(NSRegularExpression.escapedPattern(for: searchTerm))\\b.*"
let predicate = NSPredicate(format: "tagName MATCHES[c] %@", pattern)

Поиск всех записей, где tagName содержитзаданный поисковый термин, окруженный «границей слова» (шаблон \b).

...