objective-c代码右键填充NSString?

Gre*_*reg 14 iphone objective-c padding nsstring ios

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

例如,想要这些字符串:

Testing 123 Long String
Hello World
Short 
Run Code Online (Sandbox Code Playgroud)

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

Testing 123 xxx
Hello World xxx
Short       xxx
Run Code Online (Sandbox Code Playgroud)

这是第二栏想要的.

She*_*ley 12

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

NSString *padded = [NSString stringWithFormat:@"%-12@", someString];
Run Code Online (Sandbox Code Playgroud)

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

NSString *padded = [NSString stringWithFormat:@"%-12.12@", someString];
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,根据约翰内斯的评论,我还发现%@ formatter不会添加空格. (11认同)
  • NSString*someString = @"123456789012345678"; NSString*padded = [NSString stringWithFormat:@"% - 30 @",someString]; NSLog(@"%@",someString); NSLog(@"%@",填充); 据我所知,上面的代码应该给出someString的正确填充版本.但是,它会打印两次相同的字符串.我错过了什么吗? (8认同)
  • @ cnotethegr8仅适用于恰好只包含7位ASCII字符的字符串.%s修饰符不期望UTF-8编码的字符串. (3认同)
  • 我注意到使用带有附加字符串的`UTF8String`将按预期工作.`NSString*someString = @"123456789012345678"; NSString*padded = [NSString stringWithFormat:@"% - 30s%@",[someString UTF8String],someString]; NSLog(@"%@",someString); NSLog(@"%@",填充);` (2认同)

bbu*_*bum 5

的第2列什么会排队?

假设您使用的是iOS,那么使用HTML或表格视图比使用空格对齐字符要简单得多。除了在编程上更加优雅外,它还会看起来更好,在输入数据随时间变化时更具弹性,并使用户体验更加符合该平台的期望。

如果您确实想使用空格,那么您将不得不将UI限制为等宽字体(出于特定上下文(例如源代码)之外的可读性考虑,这是丑陋的),国际字符会有些麻烦。

从那里开始,将需要获取字符串的长度(请记住,“长度”在某些语言中不一定表示“字符数”),需要做一些数学运算,substringWithRange:并在结果中添加空格。