objective-c代码右键填充NSString?

时间:2011-03-22 03:17:23

标签: iphone objective-c ios nsstring padding

有人可以提供一个代码示例,说明如何在objective-c中正确填充NSString吗?

例如,想要这些字符串:

Testing 123 Long String
Hello World
Short 

如果右边填充到12的列宽:然后在每个的末尾添加一个刺“XXX”,它将给出:

Testing 123 xxx
Hello World xxx
Short       xxx

这是第二栏想要的。

6 个答案:

答案 0 :(得分:12)

亚当走在正确的轨道上,但并不完全在那里。你想要使用+ stringWithFormat:,但不像他建议的那样。如果要将“someString”填充到(比如说)至少12个字符,则可以使用宽度说明符作为格式的一部分。由于您希望结果左对齐,因此您需要在宽度说明符之前加上减号:

NSString *padded = [NSString stringWithFormat:@"%-12@", someString];

或者,如果您希望结果完全 12个字符,则可以使用最小和最大宽度说明符:

NSString *padded = [NSString stringWithFormat:@"%-12.12@", someString];

答案 1 :(得分:4)

排在第二列?

鉴于您使用的是iOS,使用HTML或表视图比尝试使用空格排列字符要简单得多。除了在程序上更优雅之外,它看起来会更好,随着时间的推移对输入数据的变化更具弹性,并使用户体验更符合平台的期望。

如果确实想要使用空格,那么您将不得不将UI限制为等宽字体(出于可读性目的而在特定上下文之外,例如源代码)并且国际字符是会有点痛苦。

从那里开始,这将是获得字符串长度的问题(请记住,“长度”并不一定意味着某些语言中的“字符数”),使用substringWithRange:做一些数学运算并在结果中附加空格。

答案 2 :(得分:3)

不幸的是,Objective-C不允许%@的格式说明符。填充的解决方法如下:

NSString *padded = [NSString stringWithFormat:@"%@%*s", someString, 12-someString.length, ""];

将字符串填充到右侧,空格最多为12个字符的字段长度。

答案 3 :(得分:0)

% - @不起作用,但%-s有效

NSString *x = [NSString stringWithFormat:@"%-3@", @"a" ];
NSString *y = [NSString stringWithFormat:@"%-3@", @"abcd" ];
NSString *z = [NSString stringWithFormat:@"%-3@ %@", @"a", @"bc" ];
NSString *zz = [NSString stringWithFormat:@"%-3s %@", "a", @"bc" ];
NSLog(@"[%@][%@][%@][%@].......", x,y,z,zz);

输出:     [a] [abcd] [a bc] [a bc] .......

答案 4 :(得分:0)

请尝试以下操作。它为我工作。

NSString *someString = @"1234";
NSString *padded = [someString stringByPaddingToLength: 16 withString: @"x" startingAtIndex:0];

NSLog(@"%@", someString);
NSLog(@"%@", padded);

答案 5 :(得分:-1)

首先,你做的很糟糕。请为两列使用单独的标签,然后您还可以使用比例字体。你正在寻找一个iPhone curses库。

如果你真的必须这样做,只需使用stringWithFormat:,如:

NSString *secondColumnString = @"xxx";
NSString *spacedOutString = [NSString stringWithFormat:@"testingColOne  %@", secondColumnString];
NSString *spacedOutString = [NSString stringWithFormat:@"testingAgain   %@", secondColumnString];