假设我有这个号码 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/

10-14 23:04