我希望能夠使用空格對齊字符串。我必須能夠使用stringWithFormat:
方法。如何正確使用stringWithFormat填充字符串
到目前爲止,我已嘗試推薦的格式,它似乎並沒有工作:[NSString stringWithFormat:@"%[email protected]",@"test"]
。
我希望這會返回一個字符串,其中有六個空格後跟「測試」,但我所得到的是「測試」,沒有空格。
我希望能夠使用空格對齊字符串。我必須能夠使用stringWithFormat:
方法。如何正確使用stringWithFormat填充字符串
到目前爲止,我已嘗試推薦的格式,它似乎並沒有工作:[NSString stringWithFormat:@"%[email protected]",@"test"]
。
我希望這會返回一個字符串,其中有六個空格後跟「測試」,但我所得到的是「測試」,沒有空格。
看起來stringWithFormat
忽略了%@
格式說明符的大小請求。然而,%s
符正常工作:
NSString *test = @"test";
NSString *str = [NSString stringWithFormat:@"%10s", [test cStringUsingEncoding:NSASCIIStringEncoding]];
NSLog(@"'%@'", str);
這將打印' test'
。
因爲'NSString'可以包含任何Unicode字符,所以最好使用'[test UTF8String]'而不是轉換爲ASCII。 – rmaddy 2013-02-12 01:14:21
這對我有用。有關爲什麼它不適用於'%@'的任何想法? – zachzurn 2013-02-12 01:20:52
@zachzurn蘋果執行'%@'格式說明符不符合IEEE規範中'%s'的標準修飾符是令人遺憾的。儘管這是一個簡單的解決方法。當然,更適合任何對象的一般解決方案是使用'[[someObject description] UTF8String]'。 – rmaddy 2013-02-12 01:23:35
這是C風格格式。 %nd表示寬度是n。
檢查以下代碼。
NSLog(@"%[email protected]",[NSString stringWithFormat:@"%[email protected]",@"test"]);
NSLog(@"%@",[NSString stringWithFormat:@" %@",@"test"]);
NSLog(@"%[email protected]", @"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-12 02:08:32