Formattting numéro de Téléphone dans l'Swift

Je suis formatage de mon textfiled texte lorsque l'utilisateur commence à taper le numéro de téléphone dans ce type de format 0 (555) 444 66 77 et il fonctionne très bien mais une fois que je reçois le numéro du serveur j'obtiens comme ça 05554446677 de Sorte s'il vous plaît pourriez-vous me dire comment je peux le modifier dans le même format une fois que je l'obtenir pour le serveur?

Mon code une fois que je commence à taper:

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
}
}
Les numéros de téléphone sont incroyablement complexes. Les hypothèses que vous pourriez avoir au sujet de leur format sont de nature purement locale, et sûrement avoir des tonnes d'exceptions et de cas limites. Utiliser une bibliothèque à la place, qui a codifié l'ensemble de ces exceptions à travailler à l'étranger. E. g.: github.com/marmelroy/PhoneNumberKit

OriginalL'auteur CAN | 2015-09-02