我正在将NSString
转换为NSNumber
。但问题是,如果NSString
以零开头,则将其转换为NSNumber
会忽略初始零。我知道初始零并不意味着什么,但我想保留初始零,因为在我的情况下它是phonenumber。
这是我的代码:
NSLog(@"test1: %@",tempPhoneNumber);
NSNumberFormatter *formatter=[[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *tempPnoneNumberNumber=[formatter numberFromString:tempPhoneNumber];
NSLog(@"test: %@",tempPnoneNumberNumber);
如果test1:00966123456789 然后测试:966123456789
我想要两个相同的
答案 0 :(得分:4)
NSNumber
无法保留初始零。
如果您想保留零,请勿将其更改为NSNumber
。电话号码实际上不是数字,通常保留为字符串。
另请注意,phonenumbers可以包含其他字符:+
,*
或#
。这些字符通常具有特殊含义(例如,开头的+
表示与00
相同。)
答案 1 :(得分:2)
如果您知道一个数字必须有多少位数,您可以使用"%014lli"
格式将其格式化为可选的前导零所需的位数。幻数14是所需的位数,包括前导零。以下是demo in C的链接,该{{3}}使用long long
常量来表示您的号码。
P.S。电话号码不是真正的“数字”,它们是恰好由数字组成的字符串。由于前导零问题,您不应该尝试将它们精确地转换为数字。
答案 2 :(得分:1)
如果你没有用它进行计算,那么它是一个字符串,而不是一个数字。
这适用于电话号码,邮政编码等。
如果你设法存储前导零,那么有人最终会收到这个电话号码:+44(0)1234 567890 - 你将如何处理?
答案 3 :(得分:0)
有两种方法可以实现这一目标: 首先,如果您的电话号码是固定大小,那么您可以使用此
NSLog(@"test %014d", tempPnoneNumberNumber);
否则只需按
添加前导零[formatter setPaddingCharacter:@"00"];