inputstring的validation是否为CivilID?
我有一个以下格式的UITextfield。 这是一个我们通常在海湾国家看到的民事证件。 所以我需要在Swift中的UITextfield中validation。
公民身份certificate文件格式 – NYYMMDDNNNNN其中N位数字,YY出生年份的后两位数字,MM出生月份,DD出生date..
请告诉我如何对此进行validation。 我目前使用目标C代码validation出生date:
NSString *dateFromTextfield = @"07/24/2013"; // Convert string to date object NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"MM/dd/yyyy"];// here set format which you want... NSDate *date = [dateFormat dateFromString:dateFromTextfield];
但如何做到这一点,我的格式需要快速“NYYMMDDNNNNN”。
首先,允许你的文本框input只是数字,并给出限制,在你的情况下需要12个字符,所以给出12个字符的限制 – 下面是代码 –
func textField(_ textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { let currentCharacterCount = textField.text?.characters.count if (range.length + range.location > currentCharacterCount!){ return false } let newLength = currentCharacterCount! + string.characters.count - range.length let allowedCharacters = CharacterSet.decimalDigits let characterSet = CharacterSet(charactersIn: string) return newLength <= 12 && allowedCharacters.isSuperset(of: characterSet) }
之后,只需确认用户的出生date和input的出生date是否正确,
func submitBtnTapped() { //Let say your civicID is like below let civicID = "113072489656" var birthDate = String(civicID.characters.prefix(7)) birthDate.remove(at: birthDate.startIndex) let userBirthDate = "07/24/2013" let formatter = DateFormatter() formatter.dateFormat = "MM-dd-yyyy" let date = formatter.date(from: userBirthDate) print("\(String(describing: date))") formatter.dateFormat = "yyMMdd" let actualBirthDate = formatter.string(from: date!) print(actualBirthDate) if birthDate == actualBirthDate { print("true") }else { print(“false”) } }
希望它能为你工作。