Objective-c код для правой панели NSString?

Может кто-нибудь дать пример кода о том, как правильно нанести NSString в objective-c, пожалуйста?

Например, хотите эти строки:

Testing 123 Long String
Hello World
Short 

если справа добавлено ширину столбца, например, 12: а затем к концу каждого из них добавляется "XXX", это даст:

Testing 123 xxx
Hello World xxx
Short       xxx

Это будет второй столбец.

Ответ 1

Адам находится на правильном пути, но не совсем там. Вы хотите использовать + stringWithFormat:, но не совсем так, как он предложил. Если вы хотите наложить "someString" на (скажем) не менее 12 символов, вы должны использовать спецификатор ширины как часть формата. Поскольку вы хотите, чтобы результат был выровнен по левому краю, вам нужно перед спецификатором ширины указать минус:

NSString *padded = [NSString stringWithFormat:@"%[email protected]", someString];

Или, если вы хотите, чтобы результат был ровно 12 символов, вы можете использовать как минимальные, так и максимальные спецификации ширины:

NSString *padded = [NSString stringWithFormat:@"%[email protected]", someString];

Ответ 2

2-й столбец, что бы выстроить?

Учитывая, что вы работаете в iOS, использование HTML или табличного представления было бы гораздо более простым, чем попытка выстроить символы с пробелами. Помимо более элегантного программного обеспечения, он будет выглядеть лучше, быть более устойчивым, чтобы вводить изменения данных со временем, а также улучшать пользовательский интерфейс в соответствии с ожиданиями для платформы.

Если вы действительно хотите использовать пробелы, вам придется ограничить свой пользовательский интерфейс моноширинным шрифтом (уродливым для целей читаемости вне конкретных контекстов, например, исходного кода), а международные символы будут немного боль.

Оттуда нужно было бы получить длину строки (имея в виду, что "длина" не обязательно означает "количество символов" на некоторых языках), делая немного математики, используя substringWithRange: и добавляя пробелы к результату.

Ответ 3

К сожалению, Objective-C не позволяет спецификаторы формата для% @. Обход для заполнения следующий:

NSString *padded = [NSString stringWithFormat:@"%@%*s", someString, 12-someString.length, ""];

который поместит строку вправо с пробелами до длины поля 12 символов.

Ответ 4

% - @не работает, но% -s работает

NSString *x = [NSString stringWithFormat:@"%[email protected]", @"a" ];
NSString *y = [NSString stringWithFormat:@"%[email protected]", @"abcd" ];
NSString *z = [NSString stringWithFormat:@"%[email protected] %@", @"a", @"bc" ];
NSString *zz = [NSString stringWithFormat:@"%-3s %@", "a", @"bc" ];
NSLog(@"[%@][%@][%@][%@].......", x,y,z,zz);

Выход:   [a] [abcd] [a bc] [a bc].......

Ответ 5

Попробуйте ниже. он работает для меня.

NSString *someString = @"1234";
NSString *padded = [someString stringByPaddingToLength: 16 withString: @"x" startingAtIndex:0];

NSLog(@"%@", someString);
NSLog(@"%@", padded);

Ответ 6

Во-первых, вы делаете это плохо. Пожалуйста, используйте отдельные метки для двух столбцов, а затем вы также сможете использовать пропорциональные шрифты. Как вы это делаете, вы должны искать библиотеку curses для iPhone.

Если вам действительно нужно это сделать, просто используйте stringWithFormat:, например:

NSString *secondColumnString = @"xxx";
NSString *spacedOutString = [NSString stringWithFormat:@"testingColOne  %@", secondColumnString];
NSString *spacedOutString = [NSString stringWithFormat:@"testingAgain   %@", secondColumnString];