NSString到NSNumber忽略初始零

我正在将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

我想要两个相同

NSNumber无法保持初始零。

如果要保留零, 请不要将其转换NSNumber 。 电话号码实际上不是数字,通常保留为字符串。

另请注意,phonenumbers可以包含其他字符: +*# 。 这些字符通常具有特殊含义(例如,开头的+表示与00相同)。

如果您知道一个数字必须有多少位数,您可以使用"%014lli"格式将其格式化为可选的前导零所需的位数。 幻数14是所需的位数,包括前导零。 以下是C语言中的演示链接,该演示使用long long常量来表示您的号码。

PS电话号码不是真正的“数字”,它们是恰好由数字组成的字符串。 由于前导零问题,您不应该尝试将它们精确地转换为数字。

如果你没有用它做计算,那么它是一个字符串,而不是一个数字。

这适用于电话号码,邮政编码等。

如果你设法存储前导零,那么有人最终会得到这个电话号码:+44(0)1234 567890 – 你将如何处理?

有两种方法可以实现此目的:首先,如果您的电话号码是固定大小,那么您可以使用此方法

 NSLog(@"test %014d", tempPnoneNumberNumber); 

否则只需添加前导零

 [formatter setPaddingCharacter:@"00"];