32 votes

Rembourrage de la chaîne à gauche avec l'objectif c

Comment peut-on remplir une chaîne à gauche dans l'objectif c. Par exemple, si j'ai une valeur entière de 6, je veux qu'elle s'affiche comme 06.

J'utilise stringByPaddingToLength: mais ça le garnit à droite comme 60.

Votre aide est très appréciée.

78voto

nevan king Points 46410

Celui-ci est parti avec 10 zéros.

 NSString *padded = [NSString stringWithFormat:@"Padded left with zeros: %010d", 65];
 

20voto

aimless Points 345
+ (NSString *)formatValue:(int)value forDigits:(int)zeros {
    NSString *format = [NSString stringWithFormat:@"%%0%dd", zeros]; 
    return [NSString stringWithFormat:format,value];
} 

13voto

dreamlax Points 47152

Maladroit, mais ça fera l'affaire.

 @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
 

Ensuite, vous pouvez faire:

 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"
 

7voto

bmauter Points 523

Vieux fil, je sais, mais c'est un moyen pratique pour le pad gauche. Je l'ai ma classe Util. Vous pouvez l'adapter au pad droit si nécessaire. La meilleure partie est qu'il fonctionne avec le rembourrage que vous souhaitez.

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

Compatible ARC et non ARC. :)

Pour l'appeler, utilisez [Util leftPadString:@"42" withPadding:@"0000"]; .

Vous pouvez également le mettre dans une catégorie sur NSString pour un appel encore plus facile comme [@"42" stringByLeftPadding:@"0000"] .

Les deux vous donnent 0042.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X