Ответ 1
+ (NSString *)formatValue:(int)value forDigits:(int)zeros {
NSString *format = [NSString stringWithFormat:@"%%0%dd", zeros];
return [NSString stringWithFormat:format,value];
}
Как можно проложить строку влево в объективе c. Например, если у меня есть целочисленное значение 6, я хочу, чтобы оно отображалось как 06.
Я использую stringByPaddingToLength:
, но он подставляет его вправо, например, 60.
Ваша помощь очень ценится.
+ (NSString *)formatValue:(int)value forDigits:(int)zeros {
NSString *format = [NSString stringWithFormat:@"%%0%dd", zeros];
return [NSString stringWithFormat:format,value];
}
На этой вкладке осталось 10 нулей.
NSString *padded = [NSString stringWithFormat:@"Padded left with zeros: %010d", 65];
Неуклюжий, но он выполнит эту работу.
@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"
Старый поток, я знаю, но это удобный способ оставить пэд. У меня есть мой класс 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.
для полноты (используя *
placeholder):
NSString *paddedNumberString = [NSString stringWithFormat:@"%0*d", amountOfZeros, numberNSInteger]