不允许少于 3 个字符的单词
Disallow words less than 3 characters
在下面的 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个字符,它会return false
,否则,它会测试UITextChecker()
然后return true
或 false
分别
编辑:替代使用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),函数会自动return false
您可以实施 didEndEditing UItextfieldDelegate 方法,然后检查 1) 它是一个单词和 2) 它是否超过 2 个字符。那时你需要显示错误或红色标题标签或其他东西。
func textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason) {
guard let string = textField.text else {
return
}
let characterSet = CharacterSet(charactersIn: string)
if characterSet.intersection(CharacterSet.whitespacesAndNewlines).isEmpty != true {
// we have white space!
}
if string.characters.count < 3 {
// too short
}
}
您不需要实现新函数来检查来自 UITextField
的输入。 UITextField
有它自己的功能。你应该使你的 ViewController class 符合 UITextFieldDelegate
协议,将其设置为你的 UITextField
的委托,然后实现所需的委托方法,textFieldDidEndEditing
和检查那里输入的长度。
extension YourViewController: UITextFieldDelegate {
func textFieldDidEndEditing(_ textField: UITextField) {
guard let input = textField.text else {return}
if input.characters.count < 3 {
//handle error
}
}
}
在 YourViewController
的 viewDidLoad
中:
yourTextField.delegate = self
在下面的 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个字符,它会return false
,否则,它会测试UITextChecker()
然后return true
或 false
分别
编辑:替代使用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),函数会自动return false
您可以实施 didEndEditing UItextfieldDelegate 方法,然后检查 1) 它是一个单词和 2) 它是否超过 2 个字符。那时你需要显示错误或红色标题标签或其他东西。
func textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason) {
guard let string = textField.text else {
return
}
let characterSet = CharacterSet(charactersIn: string)
if characterSet.intersection(CharacterSet.whitespacesAndNewlines).isEmpty != true {
// we have white space!
}
if string.characters.count < 3 {
// too short
}
}
您不需要实现新函数来检查来自 UITextField
的输入。 UITextField
有它自己的功能。你应该使你的 ViewController class 符合 UITextFieldDelegate
协议,将其设置为你的 UITextField
的委托,然后实现所需的委托方法,textFieldDidEndEditing
和检查那里输入的长度。
extension YourViewController: UITextFieldDelegate {
func textFieldDidEndEditing(_ textField: UITextField) {
guard let input = textField.text else {return}
if input.characters.count < 3 {
//handle error
}
}
}
在 YourViewController
的 viewDidLoad
中:
yourTextField.delegate = self