2013-04-01 68 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); 

如果測試1: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

如果添加前導零你沒有對它進行計算,那麼它是一個字符串,而不是數字。

這適用於電話號碼,郵政編碼等

如果你設法保存前導零,然後有人會最終與該電話號碼一起走:+44(0)1234 567890 - 你將如何應對接着就,隨即?