将字符串填充到左侧

Ton*_*lon 32 iphone xcode objective-c

如何在目标c中填充一个字符串.例如,如果我的整数值为6,我希望它显示为06.

我使用stringByPaddingToLength:它,但它像60一样填充到右边.

非常感谢您的帮助.

nev*_*ing 78

这个用10个零填充左边.

NSString *padded = [NSString stringWithFormat:@"Padded left with zeros: %010d", 65];
Run Code Online (Sandbox Code Playgroud)


aim*_*ess 20

+ (NSString *)formatValue:(int)value forDigits:(int)zeros {
    NSString *format = [NSString stringWithFormat:@"%%0%dd", zeros]; 
    return [NSString stringWithFormat:format,value];
} 
Run Code Online (Sandbox Code Playgroud)

  • 为什么不使用变量字段长度,而不是构造变量格式,例如`[NSString stringWithFormat:@"%0*d",零,值];`? (2认同)

dre*_*lax 13

笨拙,但它会完成这项工作.

@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
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

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"
Run Code Online (Sandbox Code Playgroud)


bma*_*ter 7

老线程,我知道,但这是一个方便的左边垫.我有我的Util课程.如果需要,您可以将其调整到右侧垫.最好的部分是它适用于你想要的任何填充.

+ (NSString *) leftPadString:(NSString *)s withPadding:(NSString *)padding {
    NSString *padded = [padding stringByAppendingString:s];
    return [padded substringFromIndex:[padded length] - [padding length]];
}
Run Code Online (Sandbox Code Playgroud)

ARC和非ARC兼容.:)

要打电话,请使用[Util leftPadString:@"42" withPadding:@"0000"];.

您也可以将它放在NSString的类别中,以便更轻松地调用[@"42" stringByLeftPadding:@"0000"].

两者都给你0042.