我在上传视频时向用户显示一个字符串,上面写着类似
20% uploaded
因此,当百分比数字是个位数时,我希望十位的空间由空白字符填充。
就像我们如何多次显示 01,02,03 的个位数作为解决方案一样,我想显示空格而不是那个 0。
我在上传视频时向用户显示一个字符串,上面写着类似
20% uploaded
因此,当百分比数字是个位数时,我希望十位的空间由空白字符填充。
就像我们如何多次显示 01,02,03 的个位数作为解决方案一样,我想显示空格而不是那个 0。
可修改左值的答案适合在 % 和 digit 之间获得首选空间。您只需检查值,并相应地找到“%”符号。或者还有另一种方式。
例如,我使用以下格式显示 % 符号。
[NSString stringWithFormat:@"%.0f%% of 100% Uploaded..",progressValue*10];
这相应地管理您的值和 '%' 符号之间的空间。
您需要通过将格式设置为%<alighmentInteger>d
您可以将值存储到stringWithFormat:
仅用于显示我直接是 NSLogging。
NSLog(@"%3d%%",i); //this will pad 3 white spaces.
如果你想要 2 个空格,请使用2d
例如:
for (int i=0; i<101; i+=25) {
NSLog(@"%3d%% uploaded",i);
}
输出:
2013-04-16 11:55:16.002 DynamicObject[48056:303] 0% 上传 2013-04-16 11:55:16.003 DynamicObject[48056:303] 25% 上传 2013-04-16 11:55:16.003 DynamicObject[48056:303] 50% 上传 2013-04-16 11:55:16.004 DynamicObject[48056:303] 75% 上传 2013-04-16 11:55:16.004 DynamicObject[48056:303] 100% 上传
我能想到的最好的主意是检查价值。如果小于 10,则打印一个空白字符。您可以使用%.*s
将其合并到 printf 中:printf("%.*s%d%% uploaded", value < 10, " ", value);
编辑:根据规范,字段宽度*
(或十进制整数)似乎为您执行此操作:(printf("%*d%% uploaded", 2, value);
或printf("%02d%% uploaded", 2, value);
)
这是一个返回所需输出的方法
- (NSString *)uploadProgress:(NSUInteger)progress {
return [NSString stringWithFormat:@"%@%% uploaded", progress < 10 ?
[NSString stringWithFormat:@" %i", progress] :
[NSString stringWithFormat:@"%i", progress]];
}
称呼:
NSLog(@"%@", [self uploadProgress:5]);
NSLog(@"%@", [self uploadProgress:50]);
输出:
2013-04-16 02:24:49.948 stackoverflow test001[11587:c07] 5% uploaded
2013-04-16 02:24:49.949 stackoverflow test001[11587:c07] 50% uploaded