0

我在上传视频时向用户显示一个字符串,上面写着类似

20% uploaded

因此,当百分比数字是个位数时,我希望十位的空间由空白字符填充。

就像我们如何多次显示 01,02,03 的个位数作为解决方案一样,我想显示空格而不是那个 0。

4

4 回答 4

3

可修改左值的答案适合在 % 和 digit 之间获得首选空间。您只需检查值,并相应地找到“%”符号。或者还有另一种方式。

例如,我使用以下格式显示 % 符号。

[NSString stringWithFormat:@"%.0f%% of 100% Uploaded..",progressValue*10];

这相应地管理您的值和 '%' 符号之间的空间。

于 2013-04-16T06:22:06.603 回答
2

您需要通过将格式设置为%<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% 上传
于 2013-04-16T06:24:22.393 回答
1

我能想到的最好的主意是检查价值。如果小于 10,则打印一个空白字符。您可以使用%.*s将其合并到 printf 中:printf("%.*s%d%% uploaded", value < 10, " ", value);

编辑:根据规范,字段宽度*(或十进制整数)似乎为您执行此操作:(printf("%*d%% uploaded", 2, value);printf("%02d%% uploaded", 2, value);

于 2013-04-16T06:17:52.997 回答
1

这是一个返回所需输出的方法

- (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
于 2013-04-16T06:26:09.700 回答