一旦用户开始将电话号码键入此格式类型,0 (555) 444 66 77并且我可以正常工作,我就在格式化文本文件中的文本,但是一旦我从服务器上获得了电话号码,我就这样得到了,05554446677所以请您告诉我如何编辑它我从服务器获得相同格式的文件吗?
0 (555) 444 66 77
05554446677
输入开始后的代码:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { if textField == phoneNumberTextField{ var newString = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string) var components = newString.componentsSeparatedByCharactersInSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet) var decimalString = "".join(components) as NSString var length = decimalString.length var hasLeadingOne = length > 0 && decimalString.characterAtIndex(0) == (1 as unichar) if length == 0 || (length > 11 && !hasLeadingOne) || length > 12{ var newLength = (textField.text as NSString).length + (string as NSString).length - range.length as Int return (newLength > 11) ? false : true } var index = 0 as Int var formattedString = NSMutableString() if hasLeadingOne{ formattedString.appendString("1 ") index += 1 } if (length - index) > 1{ var zeroNumber = decimalString.substringWithRange(NSMakeRange(index, 1)) formattedString.appendFormat("%@ ", zeroNumber) index += 1 } if (length - index) > 3{ var areaCode = decimalString.substringWithRange(NSMakeRange(index, 3)) formattedString.appendFormat("(%@) ", areaCode) index += 3 } if (length - index) > 3{ var prefix = decimalString.substringWithRange(NSMakeRange(index, 3)) formattedString.appendFormat("%@ ", prefix) index += 3 } if (length - index) > 3{ var prefix = decimalString.substringWithRange(NSMakeRange(index, 2)) formattedString.appendFormat("%@ ", prefix) index += 2 } var remainder = decimalString.substringFromIndex(index) formattedString.appendString(remainder) textField.text = formattedString as String return false }else{ return true } }
用String中的字符进行操作不是很简单。您需要遵循以下条件:
斯威夫特2.1
let s = "05554446677" let s2 = String(format: "%@ (%@) %@ %@ %@", s.substringToIndex(s.startIndex.advancedBy(1)), s.substringWithRange(s.startIndex.advancedBy(1) ... s.startIndex.advancedBy(3)), s.substringWithRange(s.startIndex.advancedBy(4) ... s.startIndex.advancedBy(6)), s.substringWithRange(s.startIndex.advancedBy(7) ... s.startIndex.advancedBy(8)), s.substringWithRange(s.startIndex.advancedBy(9) ... s.startIndex.advancedBy(10)) )
雨燕2.0
let s = "05554446677" let s2 = String(format: "%@ (%@) %@ %@ %@", s.substringToIndex(advance(s.startIndex, 1)), s.substringWithRange(advance(s.startIndex, 1) ... advance(s.startIndex, 3)), s.substringWithRange(advance(s.startIndex, 4) ... advance(s.startIndex, 6)), s.substringWithRange(advance(s.startIndex, 7) ... advance(s.startIndex, 8)), s.substringWithRange(advance(s.startIndex, 9) ... advance(s.startIndex, 10)) )
代码将打印 0 (555) 444 66 77