假设我有这个号码 1234567890
而我想要这种格式(xxx)xxx-xxxx
因此,在显示屏上,我希望它显示为(123)456-7890
我将如何实现?
我需要在文本字段上使用某种正则表达式吗?
谢谢你的时间
最佳答案
尝试这样的事情:
NSCharacterSet *digits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
NSString *filtered = [[[textField text] componentsSeparatedByCharactersInSet: digits] componentsJoinedByString: @""];
if ([filtered length] == 11) {
NSString *formatted = [NSString stringWithFormat: @"(%@) %@-%@", [filtered substringWithRange: NSMakeRange(1, 3)], [filtered substringWithRange: NSMakeRange(4, 3)], [filtered substringWithRange: NSMakeRange(7, 4)]];
[textField setText: formatted];
} else if ([filtered length] == 10) {
NSString *formatted = [NSString stringWithFormat: @"(%@) %@-%@", [filtered substringWithRange: NSMakeRange(0, 3)], [filtered substringWithRange: NSMakeRange(3, 3)], [filtered substringWithRange: NSMakeRange(6, 4)]];
[textField setText: formatted];
}
关于ios - 如何格式化恰好是美国风格的电话号码的UITextfield文本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27025303/