首页 > 解决方案 > 在swift中将hypens添加到车辆登记号

问题描述

当用户输入车辆登记号时,我需要在文本字段中添加连字符。例如,在用户键入时将其设为 KA-01-BR-1234。我已经实现了下面的方法,但是如果有的话,我正在寻找一种更好的方法来做到这一点。任何答案都会有所帮助。谢谢

KA01BR1234

我试过这样的事情:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        if textField.tag == 909090 {
            if textField.text!.count > 13 {
                return false
            }

            if range.length == 0 && (range.location == 2 || range.location == 5 || range.location == 8) {
                textField.text = "\(textField.text!)-\(string)"
                return false
            }

            return true
        }

        return true
    }

如果用户输入KA01R1234(缺少 B),这将不起作用。

在此处输入图像描述

我的第二种方法是这样的(仍然很糟糕,但目前有效):

extension String {
    ///Add Hypen for Vehicle Registration No.
    func addHypen() -> String {
        var finalStr = ""
        self.forEach { (charact) in
            if let newStr = finalStr.last, (newStr.isLetter && charact.isNumber) || (newStr.isNumber && charact.isLetter) {
                finalStr.append("-")
                finalStr.append(charact)
            } else if !charact.isWhitespace || !charact.isSymbol || !charact.isMathSymbol {
                finalStr.append(charact)
            }
        }

        return finalStr.replacingOccurrences(of: "/", with: "-")
    }
}

然后在以下情况下调用字符串上的函数textFieldDidEndEditing

textfield.text = textfield.text.addHypen()

任何更好的解决方案,欢迎!

标签: swiftxcode

解决方案


推荐阅读