有人可以提供一个代码示例,说明如何在objective-c中正确填充NSString吗?
例如,想要这些字符串:
Testing 123 Long String
Hello World
Short
如果右边填充到12的列宽:然后在每个的末尾添加一个刺“XXX”,它将给出:
Testing 123 xxx
Hello World xxx
Short xxx
这是第二栏想要的。
答案 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];