Дополнение строки к левому

Прежде всего: будьте внимательны при распаковке: temp относится к типу Integer. Но операция ++ реализована для int. Так что temp распакован, чтобы набрать int. Это означает, что если temp равен null, вы запускаете исключение NullPointerException.

И вы должны сделать это так, как вы распознали в первом блоке кода.

32
задан Stanislav Pankevich 31 March 2016 в 13:52
поделиться

2 ответа

Этот заполняет слева 10 нулей.

NSString *padded = [NSString stringWithFormat:@"Padded left with zeros: %010d", 65];
78
ответ дан 27 November 2019 в 19:45
поделиться

Неуклюжий, но сработает.

@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"
13
ответ дан 27 November 2019 в 19:45
поделиться