如何在Objective-C中将字符串向左填充。
例如,如果我有一个整数值为6,我希望它显示为06。
我使用stringByPaddingToLength:
,但它会向右填充,如60。
非常感谢您的帮助。
如何在Objective-C中将字符串向左填充。
例如,如果我有一个整数值为6,我希望它显示为06。
我使用stringByPaddingToLength:
,但它会向右填充,如60。
非常感谢您的帮助。
这个代码在左侧添加了10个零。
NSString *padded = [NSString stringWithFormat:@"Padded left with zeros: %010d", 65];
+ (NSString *)formatValue:(int)value forDigits:(int)zeros {
NSString *format = [NSString stringWithFormat:@"%%0%dd", zeros];
return [NSString stringWithFormat:format,value];
}
[NSString stringWithFormat:@"%0*d", zeros, value];
- dreamlax[stringWithFormat:@"%05%@", myString]
,但是它报告了Data argument not used byFormatString
,并且在@
之前删除%
会报告Flag '0' results in undefined behaviour with '@' conversion specifier
。 - Alex Zavatone虽然有些笨拙,但它能完成工作。
@implementation NSString (LeftPadding)
- (NSString *)stringByPaddingTheLeftToLength:(NSUInteger)newLength withString:(NSString *)padString startingAtIndex:(NSUInteger)padIndex
{
if ([self length] <= newLength)
return [[@"" stringByPaddingToLength:newLength - [self length] withString:padString startingAtIndex:padIndex] stringByAppendingString:self];
else
return [[self copy] autorelease];
}
@end
然后您可以执行:
NSString *test1 = [@"6" stringByPaddingTheLeftToLength:10 withString:@"0" startingAtIndex:0];
// test1 = "0000000006"
NSString *test2 = [@"asdf" stringByPaddingTheLeftToLength:10 withString:@"qwer" startingAtIndex:0];
// test2 = "qwerqwasdf"
NSString *test3 = [@"More than ten characters" stringByPaddingTheLeftToLength:10 withString:@"bamboo" startingAtIndex:0];
// test3 = "More than ten characters"
NSString *test4 = [test3 stringByPaddingTheLeftToLength:100 withString:test2 startingAtIndex:0];
// test4 = "qwerqwasdfqwerqwasdfqwerqwasdf...qwerqMore than ten characters"
startingAtIndex
参数已经不再必要了。 - Ge Liu虽然这是一个旧帖子,但这是一种方便的左边填充方式。我已经将它放在我的 Util 类中。如果需要,您可以适应右侧填充。最好的部分是它可以与您想要的任何填充一起使用。
+ (NSString *) leftPadString:(NSString *)s withPadding:(NSString *)padding {
NSString *padded = [padding stringByAppendingString:s];
return [padded substringFromIndex:[padded length] - [padding length]];
}
兼容ARC和非ARC。
要调用它,请使用[Util leftPadString:@"42" withPadding:@"0000"];
。
您也可以将其放入NSString类别中,以便更轻松地调用,如[@"42" stringByLeftPadding:@"0000"]
。
两者都会给您提供0042。
*
占位符):NSString *paddedNumberString = [NSString stringWithFormat:@"%0*d", amountOfZeros, numberNSInteger]