Код объектива-C для правой панели строки NSString? - PullRequest
14 голосов
/ 22 марта 2011

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

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

Testing 123 Long String
Hello World
Short 

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

Testing 123 xxx
Hello World xxx
Short       xxx

То есть 2-й столбец хотел бы вверх.

Ответы [ 6 ]

12 голосов
/ 22 марта 2011

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

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

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

NSString *padded = [NSString stringWithFormat:@"%-12.12@", someString];
4 голосов
/ 22 марта 2011

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

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

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

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

3 голосов
/ 07 января 2014

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

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

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

0 голосов
/ 07 июня 2017

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

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

NSLog(@"%@", someString);
NSLog(@"%@", padded);
0 голосов
/ 01 октября 2014

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

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

вывод: [a] [abcd] [a bc] [a bc] .......

0 голосов
/ 22 марта 2011

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

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

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