Objective c 如何用空格填充NSString?

Objective c 如何用空格填充NSString?,objective-c,nsstring,padding,Objective C,Nsstring,Padding,例如,我需要NSString至少有8个字符…而不是使用循环在上面添加左pad空格,还有其他方法吗 Examples: Input: |Output: Hello | Hello Bye | Bye Very Long |Very Long abc | abc 下面是一个示例,说明了如何做到这一点: int main (int argc, const char * argv[]) { NSString *str = @"Hell

例如,我需要NSString至少有8个字符…而不是使用循环在上面添加左pad空格,还有其他方法吗

Examples:

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

下面是一个示例,说明了如何做到这一点:

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;
}

我只是这样做:

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

此外,
14
是您想要的宽度。

如果您在方法中需要相同的答案,我必须创建一个用于我的项目中的答案。原始代码由


您可以将C语言的printf格式与
-[NSMutableString appendFormat:
和所有其他
NSString
的“格式”方法一起使用。它不尊重NSString(在
%@
上进行格式化),因此需要将它们转换为ASCII

-(NSString*)示例{
NSArray*输入=@[@“你好”,“再见”,“非常长”,“abc”];
NSMutableString*输出=[[NSMutableString alloc]init];
for(输入中的NSString*字符串){
[输出格式:@“%8s\n”,string.UTF8String];
}
返回输出;
}
/*
返回值:
你好
拜伊
很长
abc
*/

可能重复您为什么要这样做?这已经是
stringByPaddingToLength:withString:startingAtIndex:
所做的。在声明
str
之后,您可以摆脱一切,而是执行
NSLog(@“%@,[str stringByPaddingToLength:add with string:@”“startingAtIndex:0])
@Chuck是的,这是我最初的想法。不幸的是,我的理解是padding方法只在右边填充,覆盖了右边索引中的字符。换句话说,如果你从零开始,你会得到一个由八个空格组成的字符串。啊,你是对的,我显然没有正确地阅读问题。“别管我了。”dasblinkenlight我最初对索引也有同样的想法。但实际上,
startingAtIndex
表示填充字符串中填充的起始位置。请参阅[NSString类引用]。()这是错误的,这到底意味着什么?如果将长度强制转换为int,并且字符串长度小于14,则没有问题。
-(NSString*)stringByPaddingToLength:(NSInteger)newLength with string:(NSString*)padString startingAtIndex:(NSInteger)padIndex
- (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;
}
- (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
*/