gpt4 book ai didi

objective-c - 如何格式化 NSTextField 或 UITextField?

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:10 25 4
gpt4 key购买 nike

我想将放置到 NSTextField/UITextField 中的任何文本格式化为看起来像

###-###-####

这里有一些可能的输入

1112223333
111.222.3333
(111)222-3333
(111) 2223333

最佳答案

我已经测试了这段代码,它适用于您的所有示例:

- (NSString *)convertNumber:(NSString *)input {
NSMutableString *result = [NSMutableString stringWithCapacity:15];
NSScanner *scanner = [NSScanner scannerWithString:input];
NSCharacterSet *numbers = [NSCharacterSet characterSetWithCharactersInString:@"1234567890"];
NSString *temp;
NSInteger location = 0;

// Get first group
[scanner scanUpToCharactersFromSet:numbers intoString:&temp];
location = [scanner scanLocation];
[scanner scanCharactersFromSet:numbers intoString:&temp];
[result appendString:temp];

if ([scanner scanLocation] < location + 4) {
// Only scanned three numbers - get second group
[scanner scanUpToCharactersFromSet:numbers intoString:&temp];
location = [scanner scanLocation];
[scanner scanCharactersFromSet:numbers intoString:&temp];
[result appendString:temp];

if ([scanner scanLocation] < location + 4) {
// Only scanned three numbers - get last group
[scanner scanUpToCharactersFromSet:numbers intoString:&temp];
[scanner scanCharactersFromSet:numbers intoString:&temp];
[result appendString:temp];
}
} else if ([scanner scanLocation] < location + 7) {
// Scanned six numbers - get last group
[scanner scanUpToCharactersFromSet:numbers intoString:&temp];
[scanner scanCharactersFromSet:numbers intoString:&temp];
[result appendString:temp];
}

// Add dashes
if ([result length] > 6) {
[result insertString:@"-" atIndex:3];
[result insertString:@"-" atIndex:7];
}

return result;
}

3、3 和 4 组之间的任何数量的非数字字符(或无)都将被忽略。

警告:它可能会到处泄漏,如果输入意外,可能会崩溃。

关于objective-c - 如何格式化 NSTextField 或 UITextField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9036661/

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