我有三个文本字段,分别称为家庭电话、工作电话和手机。我需要对这些字段进行验证和数字格式化。下图是条件。
家庭电话和工作电话文本字段不应接受超过 10 位和少于 8 位的数字。这些字段应该只接受数字。数字的格式应该是 xxxx-xxxx(如果是 8 位) xx-xxxx-xxxx(如果是 10 位)
移动电话号码字段不应接受超过 10 位数字。这些字段应该只接受数字。数字的格式应为 xxxx-xxx-xxx
我不确定如何实现这一目标。请帮我。
我有三个文本字段,分别称为家庭电话、工作电话和手机。我需要对这些字段进行验证和数字格式化。下图是条件。
家庭电话和工作电话文本字段不应接受超过 10 位和少于 8 位的数字。这些字段应该只接受数字。数字的格式应该是 xxxx-xxxx(如果是 8 位) xx-xxxx-xxxx(如果是 10 位)
移动电话号码字段不应接受超过 10 位数字。这些字段应该只接受数字。数字的格式应为 xxxx-xxx-xxx
我不确定如何实现这一目标。请帮我。
我认为您可以通过执行以下操作来实现此目的:
有点晚了,但它可能会帮助其他人,将 UITextfield 文本格式化为 XXX-XXX-XXXX 格式
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
var number = textField.text as NSString? ?? ""
number = number.replacingCharacters(in: range, with: string) as NSString
number = number.replacingOccurrences(of: "-", with: "") as NSString
if (number.length > 10) {
return false;
}
self.resetBtnState(numberLength: number.length)
var groupSize = 3
let separator = "-"
if string.characters.count == 0 {
groupSize = 5
}
let numformatter = NumberFormatter()
numformatter.groupingSeparator = separator
numformatter.groupingSize = groupSize
numformatter.usesGroupingSeparator = true
numformatter.secondaryGroupingSize = 3
if var number = textField.text, string != "" {
number = number.replacingOccurrences(of: separator, with: "")
if let doubleVal = Double(number) {
let requiredString = numformatter.string(from: NSNumber.init(value: doubleVal))
textField.text = requiredString
}
}
return true
}