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