我正在阅读别人的代码,他们正在使用%@ - 1格式化整数。我无法在Google上找到任何内容,因为它忽略了符号。还有其他人比我更有经验吗?
[NSString stringWithFormat:@"%@-1", subnumber]
谢谢!
答案 0 :(得分:6)
即将打印" NUM-1" (其中NUM是数字)。举个例子,如果数字是5,那将打印" 5-1"。
使用格式字符串时,格式标记的任何修饰符必须出现在格式类型说明符之前。在这种情况下,这意味着%@
令牌的任何修饰符必须出现在%
和@
之间(尽管我不确定是否实际存在%@
修饰符{{1}} 1}}接受)。
答案 1 :(得分:6)
每个转换规范由'%'字符或字符序列“%n $”引入,之后按顺序出现以下内容:
零个或多个标志(按任意顺序),修改转换规范的含义。
可选的最小字段宽度。如果转换后的值的字节数少于字段宽度,则默认情况下应在左侧填充空格;如果下面描述的左调整标志(' - ')被赋予字段宽度,则它应在右侧填充。字段宽度采用星号('*')的形式,如下所述,或十进制整数。
一个可选的精度,它给出了d,i,o,u,x和X转换说明符的最小位数; a,a,e,E,f和F转换说明符的基数字符后出现的位数; g和G转换说明符的最大有效位数;或者从[XSI] [Option Start]和S [Option End]转换说明符中的字符串打印的最大字节数。精度采用句点('。')的形式,后跟星号('*'),如下所述,或者是可选的十进制数字字符串,其中空数字字符串被视为零。如果精度与任何其他转换说明符一起出现,则行为未定义。
可选的长度修饰符,用于指定参数的大小。
转换说明符字符,指示要应用的转化类型。
我们正在使用第一种类型的转换,因为这里没有美元符号。请注意上面列表顶部的 in sequence 。 @
是转换说明符字符(如here所述),表示我们应该以{{1}}的形式访问传入的值并读取其NSObject
属性。由于我们已经到达最后一个项目符号点,格式代码实际上在description
符号后面结束,正如@Kevin Ballard指出的那样,@
被解析为文字文本。
答案 2 :(得分:3)
子编号可能是像NSNumber这样的类的对象。就像我们将%d用于int,%f用于float,%@是用于引用的占位符。在那种情况下
NSNumber *subnumber = [NSNumber numberWithInt:5];
NSLog([NSString stringWithFormat:@"%@-1", subnumber]);
将打印'5-1'