UITextChecker для набора строк - Swift 4.2 - PullRequest
0 голосов
/ 10 марта 2019

У меня сейчас есть Extension благодаря @Leo Dabus.Он отлично работает для одного String, но как мне реализовать эту же логику для Set из Strings, как var mySet = ["word", "notaword", "stillnotaword"].В этом примере я бы хотел, чтобы функция идентифицировала только первые index как true (то есть английское слово).

extension String {
    public mutating func isEnglishWord() -> Bool {
        return UITextChecker().rangeOfMisspelledWord(in: self, range: NSRange(location: 0, length: utf16.count), startingAt: 0, wrap: false, language: "en_US").location == NSNotFound
    }
}

var myString = "word"

myString.isEnglishWord()

1 Ответ

0 голосов
/ 11 марта 2019
let words = ["word", "notaword", "stillnotaword"]

let validWords = words.filter { word -> Bool in
    return word.isEnglishWord()
}

let wordsArray : NSArray = NSArray(array: words)
let validWordsIndexes = wordsArray.indexesOfObjects { (word, index, _) -> Bool in
    return (word as! String).isEnglishWord()
}

print(validWords)
print(validWordsIndexes)

extension String {
    public func isEnglishWord() -> Bool {
        return UITextChecker().rangeOfMisspelledWord(in: self, range: NSRange(location: 0, length: utf16.count), startingAt: 0, wrap: false, language: "en_US").location == NSNotFound
    }
}

Я добавил код для печати допустимых слов и индексов допустимых слов. Вы можете выбрать то, что вам подходит. Спасибо

...