Как разместить NSString с пробелами?
Например, мне нужно, чтобы в NSString было по крайней мере 8 символов... вместо того, чтобы использовать цикл для добавления в него пробелов левой панели, есть ли способ сделать это?
Examples:
Input: |Output:
Hello | Hello
Bye | Bye
Very Long |Very Long
abc | abc
Ответы
Ответ 1
Вот пример того, как вы можете это сделать:
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;
}
Ответ 2
Я просто делаю что-то вроде этого:
NSLog(@"%*c%@", 14 - theString.length, ' ', theString);
Кроме того, 14
- это требуемая ширина.
Ответ 3
Вы можете использовать форматирование printf на языке C с -[NSMutableString appendFormat:]
и всеми другими методами "формата" NSString
. Он не учитывает 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
*/
Ответ 4
если вам нужен тот же ответ в методе, мне пришлось создать его для использования в моих проектах. исходный код 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;
}