【发布时间】:2009-06-30 13:58:46
【问题描述】:
C# 的语法允许您在字符串格式说明符中指定参数索引,例如:
string message = string.Format("Hello, {0}. You are {1} years old. How does it feel to be {1}?", name, age);
您可以多次使用参数,也可以省略使用提供的参数。 Another question 以 %[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 来完成这个?这对于本地化目的很有用。
【问题讨论】:
-
提交错误报告(并让我们知道错误#)。
标签: objective-c cocoa