Objective c 如何用空格填充NSString?
例如,我需要NSString至少有8个字符…而不是使用循环在上面添加左pad空格,还有其他方法吗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
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
*/