0

我有三个文本字段,分别称为家庭电话、工作电话和手机。我需要对这些字段进行验证和数字格式化。下图是条件。

家庭电话和工作电话文本字段不应接受超过 10 位和少于 8 位的数字。这些字段应该只接受数字。数字的格式应该是 xxxx-xxxx(如果是 8 位) xx-xxxx-xxxx(如果是 10 位)

移动电话号码字段不应接受超过 10 位数字。这些字段应该只接受数字。数字的格式应为 xxxx-xxx-xxx

我不确定如何实现这一目标。请帮我。

4

2 回答 2

1

我认为您可以通过执行以下操作来实现此目的:

  1. 捕获 uitextfield 中的文本更改事件。在 4 个字符后、7 个字符后添加破折号,依此类推,具体取决于您想要的格式。
  2. 使用正则表达式验证带有破折号的整个数字字符串。(例如:对于 xxxx-xxxx 格式,使用 '[0-9]{4}-[0-9]{4}')
于 2013-08-19T18:53:32.510 回答
0

有点晚了,但它可能会帮助其他人,将 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
    }
于 2017-07-14T07:11:24.180 回答