【问题标题】:Cannot spell check words of less than seven characters with UITextChecker无法使用 UITextChecker 拼写检查少于七个字符的单词
【发布时间】:2022-12-29 02:56:17
【问题描述】:

我正在尝试使用以下功能检查字典中是否有单词

func isReal(word: String) -> Bool {
    let checker = UITextChecker()
    let range = NSRange(location: 0, length: word.utf16.count)
    let wordRange = checker.rangeOfMisspelledWord(in: word, range: range, startingAt: 0, wrap: false, language: "en")
    return wordRange.location == NSNotFound
}

问题是这只适用于七个字符或更多字符的单词。较短的单词即使不在字典中也会返回 true。具体来说,在这种情况下我们得到wordRange = {9223372036854775807, 0},与有效单词相同。

【问题讨论】:

    标签: swift uikit


    【解决方案1】:

    当我在 Swift Playground 中使用您的函数时,我发现它工作得很好:

    import UIKit
    
    func isReal(word: String) -> Bool {
        let checker = UITextChecker()
        let range = NSRange(location: 0, length: word.utf16.count)
        let wordRange = checker.rangeOfMisspelledWord(in: word, range: range, startingAt: 0, wrap: false, language: "en")
        return wordRange.location == NSNotFound
    }
    
    let validStrings = ["test", "fest", "fast"]
    let validResults = validStrings.map{ isReal(word:$0) }
    print(validResults)
    
    let invalidStrings = ["xt", "fxxx", "srwe"]
    let invalidResults = invalidStrings.map{ isReal(word:$0) }
    print(invalidResults)
    
    

    您的问题可能是特定于平台或版本的。

    【讨论】:

      【解决方案2】:

      结果证明这个解决方案非常简单。我们的字符串是大写的,UITextChecker 将任何短于七个字符的大写字符串视为可能的有效首字母缩略词。在小写字母中,一切都按预期工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-30
        • 1970-01-01
        • 2018-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多