如何限制UItextField的长度和特殊字符?
How to limit length and special characters of UItextField?
我可以使用下面的代码来限制长度,但我似乎找不到同时限制特殊字符的方法。
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let newLength = count(textField.text.utf16) + count(string.utf16) - range.length
if (textField.placeholder == "USERNAME")
{
//Also limit special characters here
return newLength <= 15 // Bool
}
允许的字符数:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.
我尝试遵循此 link,但它在 objective C 中,我无法将其与上面我当前的 15 个字符限制代码合并
替代正则表达式,您可以先将所有允许的字符放入一个集合中:
var charactesAllowed = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_."
var charactersSet = [Character](charactesAllowed)
然后尝试查看最近输入的字符是否在此数组中
var newCharacter = //whatever the character is, ex: "A"
if(contains(charactersSet, newCharacter))
{
println("Allowed")
// Add it into the label text
}
let ACCEPTABLE_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
if textField == textFieldNumber{
let characterSet = CharacterSet.init(charactersIn: ACCEPTABLE_CHARACTERS).inverted
maxLength = 11
let currentString: NSString = textField.text! as NSString
let newString: NSString =
currentString.replacingCharacters(in: range, with: string) as NSString
let filter = string.components(separatedBy: characterSet).joined(separator:"")
return ((string == filter) && newString.length <= maxLength!)
}
我可以使用下面的代码来限制长度,但我似乎找不到同时限制特殊字符的方法。
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let newLength = count(textField.text.utf16) + count(string.utf16) - range.length
if (textField.placeholder == "USERNAME")
{
//Also limit special characters here
return newLength <= 15 // Bool
}
允许的字符数:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.
我尝试遵循此 link,但它在 objective C 中,我无法将其与上面我当前的 15 个字符限制代码合并
替代正则表达式,您可以先将所有允许的字符放入一个集合中:
var charactesAllowed = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_."
var charactersSet = [Character](charactesAllowed)
然后尝试查看最近输入的字符是否在此数组中
var newCharacter = //whatever the character is, ex: "A"
if(contains(charactersSet, newCharacter))
{
println("Allowed")
// Add it into the label text
}
let ACCEPTABLE_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
if textField == textFieldNumber{
let characterSet = CharacterSet.init(charactersIn: ACCEPTABLE_CHARACTERS).inverted
maxLength = 11
let currentString: NSString = textField.text! as NSString
let newString: NSString =
currentString.replacingCharacters(in: range, with: string) as NSString
let filter = string.components(separatedBy: characterSet).joined(separator:"")
return ((string == filter) && newString.length <= maxLength!)
}