C # 的语法允许您在字符串格式说明符中指定参数索引,例如:
string message = string.Format("Hello, {0}. You are {1} years old. How does it feel to be {1}?", name, age);
可以多次使用参数,也可以省略在使用时提供的参数。另一个问题以 %[index]$[format]
的形式提到了 C/C + + 的相同格式,例如 %1$i
。我还没有能够让 NSString 到 完全尊重这种语法,因为它确实表现良好时,从 省略论点的格式。下面的代码不能正常工作(EXC _ BAD _ ACCESS,因为它试图将 age
参数解引用为 NSObject *) :
int age = 23;
NSString * name = @"Joe";
NSString * message = [NSString stringWithFormat:@"Age: %2$i", name, age];
位置参数只有在格式中没有丢失参数(这似乎是一个奇怪的要求)时才受到尊重:
NSString * message = [NSString stringWithFormat:@"Age: %2$i; Name: %1$@", name, age];
所有这些调用在 OS X 中都能正常工作:
printf("Age: %2$i", [name UTF8String], age);
printf("Age: %2$i %1$s", [name UTF8String], age);
在 Objective-C/Cocoa 中有没有使用 NSString 来实现这一点的方法。