我正在尝试将字符串写入文本文件。该文本文件将由另一个程序读取。第二个程序期望文本文件中的不同“字段”是固定宽度。因此,当我用我的应用程序编写文本文件时,我需要在实际数据之间添加空格以使所有内容正确排列。如何添加这些空格?
到目前为止,我已经尝试编写一个以源字符串和目标长度作为输入的函数。如果目标比源更长,则只需附加“”。此例程的代码如下:
- (NSString *) makeStringFrom:(NSString *)source withLength:(NSInteger)length
{
// Method to add spaces to the end of a string to get it to a certain length
if ([source length] > length)
{
// String is too long - throw warning and send it back
NSLog(@"Warning - string is already longer than length supplied. Returning source string");
return source;
}
else if ([source length] == length)
{
// String is already correct length, so just send it back
return source;
}
else
{
// String is too short, need to add spaces
NSMutableString *newString = [[NSMutableString alloc] initWithString:source];
NSLog(@"newString initial length = %d",[newString length]);
for (int current = [source length]; current < length; current ++)
{
[newString stringByAppendingString:@" "];
NSLog(@"hit");
}
NSLog(@"target length = %d. newString length = %d",length,[newString length]);
return newString;
}
}
这显然不起作用。我在返回时返回的字符串长度不会改变所提供字符串的长度,即使是NSLog(@“hit”);多次运行。
答案 0 :(得分:4)
NSString
上有一个stringByPaddingToLength:withString:startingAtIndex:
方法可以做到这一点。
答案 1 :(得分:1)
你在这里犯了一个愚蠢的错误
[newString stringByAppendingString:@" "];
此返回一个新字符串,它不会影响调用者对象。你需要存储它
newString=[newString stringByAppendingString:@" "];
或只是
[newString appendString:@" "];
答案 2 :(得分:1)
你想改变:
[newString stringByAppendingString:@" "];
成:
newString = [newString stringByAppendingString:@" "];