ios - 不允许少于 3 个字符的单词

标签 ios swift uitextchecker

在下面的 Swift 代码中,用户选择一个单词并将其输入到文本框中, 现在如果长度少于 3 个字符,如何禁止输入的单词?

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

最佳答案

你可以只添加一个 if 来检查单词是否超过 3 个字符:

func isReal (word: String) -> Bool {
    if word.characters.count >= 3 {
        //return true
        let checker = UITextChecker()
        let range = NSMakeRange(0, word.utf16.count)
        let misspelledRange = checker.rangeOfMisspelledWord(in: word, range: range, startingAt: 0, wrap: false, language: "en")
        return misspelledRange.location == NSNotFound
    } else {
        return false
    }
}

这样,如果 word 小于 3 个字符,它将返回 false,否则,它将针对 UITextChecker() 进行测试然后分别返回truefalse

编辑:使用 guard 的替代方法:

func isReal (word: String) -> Bool {
    guard word.characters.count >= 3 else {
        return false
    }

    //return true
    let checker = UITextChecker()
    let range = NSMakeRange(0, word.utf16.count)
    let misspelledRange = checker.rangeOfMisspelledWord(in: word, range: range, startingAt: 0, wrap: false, language: "en")
    return misspelledRange.location == NSNotFound
}

如果不满足guard语句(即word.characters.count < 3),函数会自动返回false

关于ios - 不允许少于 3 个字符的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46179040/

相关文章:

iphone - UITextField 响应者行与边框重叠,如何定位响应者?

ios - 滚动 Swift 时 tableView 的值重复

ios - UITextView,带有拼写检查,如何使用 `ignoreWord` ?

ios - 自定义键盘的自动更正和建议

android - React-Native 在推送通知上呈现页面

javascript - 带多点触控登录的主页

ios - 当我使用 UIImagePNGRepresentation 或 UIImageJPEGRepresentation 将 UIImage 转换为 NSdata 时,图像大小增加太多

swift - 如何在 swift 子类中初始化无主存储属性?

ios - Swift - UITableViewCell 具有自定义类和原型(prototype),在第四个单元格后重复