如何在固定宽度上放置一块NSString?

dan*_*dan 5 cocoa objective-c nsstring

我有NSString字符串,表示HH:MM:SS中的时间,但可以省略HH和MM的数字.

我需要像这样对齐这些值的列:

1:01:43
  43:23
   7:00
Run Code Online (Sandbox Code Playgroud)

最简单的方法是什么?

Per*_*ion 13

使用NSString类中提供的stringWithFormat方法.像这样的东西:

NSString * dateStr = @"05:30";
NSString * formattedStr = [NSString stringWithFormat:@"%8s", [str UTF8String]];
Run Code Online (Sandbox Code Playgroud)

8在%787-8是您在格式化字符串要精确数字(或在这种情况下的字符)的数量.短于指定精度的输入字符串将左边填充空格,字符串长度将被截断.您可以在此处阅读有关printf格式字符串的更多信息.

编辑 感谢@Peter指出这一点.标准C中的格式说明符与目标C之间存在一些(次要)差异.请参阅此处有关格式字符串说明符的Apples文档.


小智 5

填充代码 不同但可能会有所帮助

NSString *st = [@"abc" stringByPaddingToLength: 9 withString: @"." startingAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

abc……

[@"abc" stringByPaddingToLength: 2 withString: @"." startingAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

AB

[@"abc" stringByPaddingToLength: 9 withString: @". " startingAtIndex:1];
Run Code Online (Sandbox Code Playgroud)

美国广播公司。. .

请注意,填充中的第一个字符是空格