Objective-C的代码,以正确的垫NSString?

有人可以给一个代码示例如何在Objective-C中正确填充NSString吗?

比如想要这些string:

Testing 123 Long String Hello World Short 

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

 Testing 123 xxx Hello World xxx Short xxx 

这是第二列想起来。

亚当在正确的轨道上,但不是那里。 你确实想要使用+ stringWithFormat :,但是不像他所build议的那样。 如果你想填充“someString”到(比如说)至less12个字符,你可以使用宽度说明符作为格式的一部分。 既然你想要结果是左alignment的,你需要在宽度说明符前加一个减号:

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

或者,如果您想要的结果恰好是 12个字符,则可以使用最小和最大宽度说明符:

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

第二列什么排队?

考虑到你在iOS上,使用HTML或者表格视图比用空格排列字符要简单得多。 除了在程序上更加优雅之外,它会更好看,随着时间的推移input数据变化更具弹性,并使用户体验更符合平台的期望。

如果你真的想使用空格,那么你将不得不限制你的用户界面为一个等宽字体(丑陋的可读性以外的特定上下文,如源代码),国际字符将有点痛苦。

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

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

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

它将string填充到空格长度最多为12个字符的右侧。

% – @不起作用,但是%-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] …….

尝试下面。 它为我工作。

 NSString *someString = @"1234"; NSString *padded = [someString stringByPaddingToLength: 16 withString: @"x" startingAtIndex:0]; NSLog(@"%@", someString); NSLog(@"%@", padded); 

首先,你这样做是一个坏的方法。 请为您的两列使用单独的标签,然后您也可以使用比例字体。 你的方式,你应该找一个iPhone的诅咒库。

如果你真的需要这样做,只需使用stringWithFormat :,就像:

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