Я ищу в своей строке точное количество слов / предложений, например:
Что я пробовал:
let str = "Art of swift, now art of swift5 but this is true art of swift from 2014 now what do you think about art of swift?"
var search = "art of swift"
str.contains(word:search)
var count = str.lowercased().components(separatedBy: search.lowercased()).count
print(count - 1)
Вывод:
4
Я ищуэто должно быть 3
, потому что art of swift5
не ищет поиск.
В приведенном выше примере возвращается 4 из-за найденного слова «art of swift» в слове «art of swift5».Мне нужен метод, который вернет 3 в этом состоянии.
Но у метода есть еще несколько случаев:
Разрешить
без учета регистра для пользователя может быть прописным или строчным, это не имеет значения для счетчика результатов поиска.Например, пользователь, вставивший Art of swift
в текстовую строку, имеет art of swift
Art of swift // it will return true as found 1
, разрешают любые специальные символы, например, ? , . etc
art of swift? // it will return true as found 1
, даже специальные символы с символами позволяют, например, `
art of swift's // it will return true as found 1
Не разрешать:
не разрешать символы разных языков, например
art of swiftবাং // it will return false as not found 0
, даже если не разрешены символы одного языка
art of swiftly // it will return false as not found 0
Зачем это нужно?
Я пытаюсь реализовать результаты поиска, чтобы показать, что они основаны на приоритете наилучшего соответствия.