1

我正在转换NSStringNSNumber. 但问题是,如果NSString从零开始,然后将其转换为NSNumber忽略初始零。我知道初始零没有任何意义,但我想保留初始零,因为在我的情况下它是电话号码。

这是我的代码:

NSLog(@"test1: %@",tempPhoneNumber);
NSNumberFormatter *formatter=[[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *tempPnoneNumberNumber=[formatter numberFromString:tempPhoneNumber];
NSLog(@"test: %@",tempPnoneNumberNumber);

如果 test1:00966123456789 那么测试:966123456789

我想要两个一样

4

4 回答 4

4

NSNumber不能保留初始零。

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

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

于 2013-04-01T12:07:47.930 回答
2

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

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

于 2013-04-01T12:10:15.760 回答
1

如果您不使用它进行计算,那么它是一个字符串,而不是一个数字。

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

如果您确实设法存储了前导零,那么最终会有人提供此电话号码:+44 (0)1234 567890 - 您将如何处理?

于 2013-04-01T14:28:28.860 回答
0

有两种方法可以做到这一点:首先,如果您的电话号码是固定大小的,那么您可以使用它

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

否则只需添加前导零

[formatter setPaddingCharacter:@"00"];
于 2013-04-01T13:58:54.900 回答