Регулярные выражения - ваш друг:
NSString * reformat( NSString * number )
{
NSRegularExpression * noDigits =
[ NSRegularExpression regularExpressionWithPattern: @"\\D" options: 0 error: NULL ] ;
NSString * onlyDigits = [ noDigits stringByReplacingMatchesInString: number
options: 0
range: NSMakeRange ( 0, number.length )
withTemplate: @"" ] ;
NSRegularExpression * phoneNumberPattern =
[ NSRegularExpression regularExpressionWithPattern: @"^(\\d\\d\\d)(\\d\\d\\d)(\\d\\d\\d\\d)$"
options: 0
error: NULL ] ;
NSString * result = [ phoneNumberPattern stringByReplacingMatchesInString: onlyDigits
options: 0
range: NSMakeRange( 0, onlyDigits.length )
withTemplate: @"$1-$2-$3" ] ;
return result ;
}
Возможно, вы захотите проверить некоторые альтернативы последней замене сопоставления с образцом на случай, если вы столкнетесь с чем-то, кроме 10 цифр. В качестве альтернативы, поставьте проверку длины сразу после вычисления onlyDigits
.