Есть ли установленная ширина в NSString? - PullRequest
4 голосов
/ 20 января 2012

Я хочу добавить свою строку с пробелами фиксированной ширины; например, я хочу показать данные в этом формате:

1   faizan   1    locked    10/20/2008
1   faizan   1    locked    10/20/2008
1   faizan   1    locked    10/20/2008
1   faizan   1    locked    10/20/2008

Но это работает только со строками одинаковой длины. Если строки разные, как это:

1   faizan   1    locked    10/20/2008
2   faizanali   1    locked    10/20/2008
3   ali turab gilani    1    locked    10/20/2008

тогда это не исправит пробелы. Чтобы я мог показывать данные с одинаковым количеством пробелов, я попробовал это:

NSString *titleColumn = [[NSString stringWithFormat:@"%@:", title] stringByPaddingToLength:20 withString:@" " startingAtIndex:0];
serializedValue = [serializedValue stringByAppendingFormat:@"%@%@", titleColumn, value];

Но это тоже не сработало. Имеет ли Objective-C функцию типа setwidth, как в C ++ и других языках?

Ответы [ 2 ]

3 голосов
/ 20 января 2012

Вы делаете это таким образом?

/ * Определите вспомогательный метод * /

- (NSString *)formattedStringWithStrings:(NSArray *)strings {

    NSString *str1 = [[strings objectAtIndex:0] stringByPaddingToLength:3 withString:@" " startingAtIndex:0];
    NSString *str2 = [[strings objectAtIndex:1] stringByPaddingToLength:20 withString:@" " startingAtIndex:0];
    NSString *str3 = [[strings objectAtIndex:2] stringByPaddingToLength:3 withString:@" " startingAtIndex:0];
    NSString *str4 = [[strings objectAtIndex:3] stringByPaddingToLength:10 withString:@" " startingAtIndex:0];
    NSString *str5 = [[strings objectAtIndex:4] stringByPaddingToLength:15 withString:@" " startingAtIndex:0];
    return [NSString stringWithFormat:@"%@%@%@%@%@", str1, str2, str3, str4, str5]; 
}

/ * Используйте вспомогательный метод */

NSArray *strings = [NSArray arrayWithObjects:@"1", @"faizan", @"1", @"locked", @"10/20/2008", nil];
NSLog(@"%@", [self formattedStringWithStrings:strings]);

strings = [NSArray arrayWithObjects:@"2", @"faizanali", @"1", @"locked", @"10/20/2008", nil];
NSLog(@"%@", [self formattedStringWithStrings:strings]);

strings = [NSArray arrayWithObjects:@"3", @"ali turab gilani", @"1", @"locked", @"10/20/2008", nil];
NSLog(@"%@", [self formattedStringWithStrings:strings]);

/ * И вывод * /

1  faizan              1  locked    10/20/2008
2  faizanali           1  locked    10/20/2008
3  ali turab gilani    1  locked    10/20/2008
0 голосов
/ 20 января 2012

Вы должны использовать NSMutableString для реализации этого. Логика:

  1. Проверьте строку максимальной длины, скажем maxLength.
  2. Теперь запустите цикл for, чтобы перебрать все строки и добавить строку с "" (пробел), если текущая длина строки меньше maxLength.
  3. Теперь с окончательным результатом вы получите все строки одинаковой длины.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...