我正在閱讀別人的代碼,他們使用%@ - 1來格式化整數。我無法在Google上找到任何內容,因爲它忽略了符號。其他人比我有更多的字符串格式化經驗?什麼是stringWithFormat:@「%@ - 1」是什麼意思?
[NSString stringWithFormat:@"%@-1", subnumber]
謝謝!
我正在閱讀別人的代碼,他們使用%@ - 1來格式化整數。我無法在Google上找到任何內容,因爲它忽略了符號。其他人比我有更多的字符串格式化經驗?什麼是stringWithFormat:@「%@ - 1」是什麼意思?
[NSString stringWithFormat:@"%@-1", subnumber]
謝謝!
各轉換規範由 '%' 字符引入,或者通過字符序列「 %n $「,之後按順序出現:
零個或多個標誌(以任何順序),其中的修改y轉換規範的含義。
可選的最小字段寬度。如果轉換後的值的字節數少於字段寬度,則默認在左側填充空格;如果下面描述的左調整標記(' - ')被賦予字段寬度,它應該被填充在右邊。字段寬度採用星號('*')(如下所述)或十進制整數。
可選精度,給出d,i,o,u,x和X轉換說明符的最小位數;在a,e,E,f和F轉換說明符的基數字符之後出現的數字位數; g和G轉換說明符的最大有效位數;或從s [XSI] [Option Start]和S [Option End]轉換說明符中的字符串打印的最大字節數。精度採用句點('。')的形式,後面跟着一個星號('*'),如下所述,或者一個可選的十進制數字字符串,其中空數字字符串被視爲零。如果精度與任何其他轉換說明符一起出現,則行爲未定義。
一個可選的長度修飾符,用於指定參數的大小。
指示要應用的轉換類型的轉換說明符字符。
我們正在使用的第一類型的轉換,因爲有一個在這裏沒有美元符號。請注意上面列表頂部的字樣,順序爲。@
是一個轉換說明符字符(如提到here),它表示我們應該訪問作爲NSObject
傳入的值並閱讀其description
屬性。由於我們已經達到最後一個要點,格式代碼實際上在@
符號後結束,正如@Kevin Ballard指出的那樣,-1
被解析爲文字文本。
這只是打印「NUM-1」(其中NUM是數字)。舉個例子,如果數字是5,那麼將打印「5-1」。
使用格式字符串時,格式標記的任何修飾符都必須出現在格式類型說明符之前。在這種情況下,這意味着%@
令牌的任何修飾符都必須出現在%
和@
之間(儘管我不確定實際上是否有任何%@
接受的修飾符)。
子數可能是像NSNumber這樣的類的對象。就像我們使用%d代表int,%f代表float,%@是參考文獻的佔位符。在這種情況下
NSNumber *subnumber = [NSNumber numberWithInt:5];
NSLog([NSString stringWithFormat:@"%@-1", subnumber]);
將打印 '5-1'
我建議不要使用動態創建的字符串作爲第一個參數到'NSLog()'。事實上,如果我沒有記錯的話,編譯器會警告它。 – 2011-11-03 05:45:33
'NSLog'的參數已經是一個格式化字符串,所以你應該只寫'NSLog(@「%@ - 1」,子編號);' – darvids0n