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"];