gpt4 book ai didi

ios - 如何格式化 UITextfield 以在 iOS 中获取电话号码字符串

转载 作者:行者123 更新时间:2023-11-28 21:46:51 27 4
gpt4 key购买 nike

我有一个接受字符串值的 UITextfield

我希望 UITextfield 将输入的字符串格式化为###-###-####限制为 10 位数字。不接受低于 10 位的数字。如果用户不小心输入了错误的号码,用户可以删除一个号码,格式化程序仍然可以工作。

字符串应保存为“###-###-####”格式,例如 213-222-0387

如果有人能提供帮助,我将不胜感激!

最佳答案

试试这个:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSArray *components = [newString componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];
NSString *decimalString = [components componentsJoinedByString:@""];

NSUInteger length = decimalString.length;
BOOL hasLeadingOne = length > 0 && [decimalString characterAtIndex:0] == '1';

if (length == 0 || (length > 10 && !hasLeadingOne) || (length > 11)) {
textField.text = decimalString;
return NO;
}

NSUInteger index = 0;
NSMutableString *formattedString = [NSMutableString string];

if (hasLeadingOne) {
[formattedString appendString:@"1 "];
index += 1;
}

if (length - index > 3) {
NSString *areaCode = [decimalString substringWithRange:NSMakeRange(index, 3)];
[formattedString appendFormat:@"%@-",areaCode];
index += 3;
}

if (length - index > 3) {
NSString *prefix = [decimalString substringWithRange:NSMakeRange(index, 3)];
[formattedString appendFormat:@"%@-",prefix];
index += 3;
}

NSString *remainder = [decimalString substringFromIndex:index];
[formattedString appendString:remainder];

textField.text = formattedString;

return NO;
}

关于ios - 如何格式化 UITextfield 以在 iOS 中获取电话号码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29834115/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com