2013-04-01 3 views
1

Я преобразовываю NSString в NSNumber. Но проблема в том, что если NSString начинается с нулей, тогда преобразование его в NSNumber игнорирует начальные нули. Я знаю, что начальные нули ничего не значат, но я хочу сохранить начальные нули, потому что это номер телефона в моем случае.NSString для NSNumber игнорирует начальные нули

вот мой код:

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

если test1: 00966123456789 затем тест: 966123456789

Я хочу как же

+1

Я не думаю, что вы можете сохранить номер с ведущими нулями .. – Krishnabhadra

ответ

4

NSNumber не может сохранить начальные нули.

Если вы хотите сохранить нули, не конвертируйте его в NSNumber. Номера телефонов на самом деле не являются номерами, их обычно хранят как строки.

Также обратите внимание на то, что номерные знаки могут содержать другие символы: +, * или #. Эти символы часто имеют особое значение (например, + в начале означает то же, что и 00).

2

Если вы знаете, сколько цифр должно иметь число, вы можете отформатировать его до необходимого количества цифр с необязательными ведущими нулями, используя формат "%014lli". Магическое число 14 - это необходимое количество цифр, включая начальные нули. Вот ссылка на demo in C, которая использует константу long long для представления вашего номера.

P.S. Номера телефонов не являются «номерами», это строки, которые состоят из цифр. Вы не должны пытаться преобразовать их в числа именно из-за главной проблемы нулей.

0

Есть два способа сделать это: первый, если ваш телефонный номер фиксированного размера, то вы можете использовать этот

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

еще только добавить ведущие нули на

[formatter setPaddingCharacter:@"00"]; 
1

If вы не выполняете вычисления с ним, это строка, а не число.

Это касается телефонных номеров, почтовых индексов и т.д.

Если вам удастся сохранить ведущие нули, то кто-то в конечном итоге прийти вместе с этим телефоном: +44 (0) 1234 567890 - как вы дело с этим?

Смежные вопросы