iPhone开发 - %1$、%2$的写法
下面的代码,输出什么。
NSLog(@"____%1$d, xxxx %2$d",1,2);NSLog(@"____%2$d, xxxx %1$d",4,5);____1, xxxx2____5, xxxx4“%1$、%2$” 是标准的格式化写法。
这种写法是什么
这是 按位置引用参数 的写法,常见于:
POSIX printf(IEEE Std 1003.1)
Objective-C:NSString stringWithFormat:、[NSString stringWithFormat:] 等
Swift:String(format:…) 用的也是同一套规则
语法是:%<位置>$<类型>位置:1$ = 第 1 个参数,2$ = 第 2 个参数,以此类推(从 1 开始)。
类型:d = 整数,@ = 对象,f = 浮点等,和普通 %d、%@ 一样。
所以:%1$d = 用第 1 个参数,按整数输出
%2$d = 用第 2 个参数,按整数输出
%1$@ = 用第 1 个参数,按对象描述输出
都是正常、标准的格式化写法。
和普通 %d 的区别
- %d %d:按参数顺序依次用第 1、2 个参数,顺序固定。
- %1d、d、%2d、d:显式指定用第几个参数,在格式串里可以任意顺序、重复使用,例如 %2d−d-%1d−d 表示先打第 2 个再打第 1 个。
多语言文案里经常用 %1d、d、%2d、d,这样翻译时可以调整语序而不改代码里的传参顺序。
%1$d 是正常、标准的格式化写法。
