【发布时间】:2023-04-08 16:55:02
【问题描述】:
我的应用程序中有一个UITextField,它接收一个号码。
我希望这个数字以特定格式表示,例如:(62) 1234 1234
问题是:我已经控制了方法-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string,但我不知道如何制作这个“面具”
目前我正在这样做:
string = [textField.text stringByReplacingCharactersInRange:range withString:string];
string = [[string componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * myNumber = [f numberFromString:string];
NSLog(@"%@", myNumber);
在这段代码的末尾我有两件事:
- string : 我的文本的字符串表示形式(例如
6212341234作为NSString) - myNumber : 此字符串的编号(例如
6212341234作为NSNumber)
如何根据myNumber 或string 创建此字符串:(62) 1234 1234?
编辑
回复 rdelmar 问题:
这个数字可以有 10 或 11 个数字,我打算像这样分开它们:
(62) 1234 1234 或 (62) 12345 1234
【问题讨论】:
-
数字总是10位数吗?而且,您是否总是想按照上面显示的方式将其分开?
-
这真的是电话号码吗?从您尝试实现的格式来看,看起来像。如果是这样,将其视为字符串并使用子字符串。
-
这不是电话号码,现在想起来可以当作一个。但是我该怎么做呢?
-
如果是电话号码,您可以根据“(62)”或“(4)”之类的区号进行推理,然后根据约定对其余部分进行分组。就分组而言,不同区域设置的电话号码格式不同。它也与正常的数字分组有很大不同,即不是基于千数之类的数量。
-
好吧...我明白你的意思了。但我仍然不知道如何实施这个解决方案。你能制定一个答案并将其作为答案发布吗?
标签: ios nsstring nsnumber nsnumberformatter