Как дополнить NSString пробелами? - PullRequest
11 голосов
/ 28 декабря 2011

Например, мне нужно, чтобы NSString имел по крайней мере 8 символов .... вместо использования цикла для добавления левых пробелов в этом, есть ли способ сделать это?

Examples:

Input:    |Output:
Hello     |   Hello
Bye       |     Bye
Very Long |Very Long
abc       |     abc

Ответы [ 4 ]

17 голосов
/ 28 декабря 2011

Вот пример того, как вы можете это сделать:

int main (int argc, const char * argv[]) {
    NSString *str = @"Hello";
    int add = 8-[str length];
    if (add > 0) {
        NSString *pad = [[NSString string] stringByPaddingToLength:add withString:@" " startingAtIndex:0];
        str = [pad stringByAppendingString:str];
    }
    NSLog(@"'%@'", str);
    return 0;
}
8 голосов
/ 15 марта 2014

Я просто делаю что-то вроде этого:

    NSLog(@"%*c%@", 14 - theString.length, ' ', theString);

Более того, 14 - это желаемая ширина.

0 голосов
/ 02 февраля 2019

Вы можете использовать форматирование printf на языке C с -[NSMutableString appendFormat:] и всеми другими NSString методами "format". Он не учитывает NSString (выполните форматирование на %@), поэтому вам необходимо преобразовать их в ASCII.

Заполнение строки в C

- (NSString *)sample {
    NSArray<NSString *> *input = @[@"Hello", @"Bye", @"Very Long", @"abc"];
    NSMutableString *output = [[NSMutableString alloc] init];
    for (NSString *string in input) {
        [output appendFormat:@"%8s\n", string.UTF8String];
    }
    return output;
}

/*
Return value:
   Hello
     Bye
Very Long
     abc
*/
0 голосов
/ 10 мая 2016

если вам нужен один и тот же ответ в методе, мне пришлось создать его для использования в моих проектах. оригинальный код dashblinkenlight

- (NSString *) LeftPadString: (NSString*) originalString LengthAfterPadding: (int)len  paddingCharacter: (char) pad
{
int add = (int) (len - originalString.length);

NSString* paddingCharString = [NSString stringWithFormat:@"%c" , pad];

if (add > 0)
{
    NSString *pad = [[NSString string] stringByPaddingToLength:add withString: paddingCharString startingAtIndex:0];
    return [pad stringByAppendingString:originalString];
}
else
    return originalString;
}
...