6

スペースを使用して文字列を右揃えにしたいと考えています。stringWithFormat:メソッドを使用できる必要があります。

これまでのところ、推奨される形式を試しましたが、うまくいかないようです: [NSString stringWithFormat:@"%10@",@"test"].

これは、6 つのスペースの後に「test」が続く文字列を返すと予想されますが、取得できるのはスペースのない「test」だけです。

4

2 に答える 2

5

フォーマット指定子stringWithFormatのサイズ変更要求を無視しているようです。%@ただし、%s指定子は正しく機能します。

NSString *test = @"test";
NSString *str = [NSString stringWithFormat:@"%10s", [test cStringUsingEncoding:NSASCIIStringEncoding]];
NSLog(@"'%@'", str);

これは印刷され' test'ます。

于 2013-02-12T01:10:57.123 に答える
3

Cスタイルのフォーマットです。%nd は、幅が n であることを意味します。

次のコードを確認してください。

NSLog(@"%10@",[NSString stringWithFormat:@"%10@",@"test"]);
NSLog(@"%@",[NSString stringWithFormat:@"      %@",@"test"]);
NSLog(@"%10@", @"test");
NSLog(@"%10s", [@"test" cStringUsingEncoding:[NSString defaultCStringEncoding]]);
NSLog(@"%10d", 1);

NSString *str = @"test";
int padding = 10-[str length]; //6
if (padding > 0) 
{
   NSString *pad = [[NSString string] stringByPaddingToLength:padding withString:@" " startingAtIndex:0];
   str = [pad stringByAppendingString:str];
}
NSLog(@"%@", str);
于 2013-02-12T01:11:06.417 に答える