Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用NSMutableString将字符串填充到固定宽度?_Ios_Objective C_Nsmutablestring - Fatal编程技术网

Ios 如何使用NSMutableString将字符串填充到固定宽度?

Ios 如何使用NSMutableString将字符串填充到固定宽度?,ios,objective-c,nsmutablestring,Ios,Objective C,Nsmutablestring,我正在尝试将字符串写入文本文件。然后,该文本文件将被另一个程序读取。第二个程序希望文本文件中的不同字段具有固定的宽度。因此,当我用我的应用程序编写文本文件时,我需要在实际数据之间添加空格,以使所有内容正确对齐。如何添加这些空间 到目前为止,我已经尝试编写了一个函数,该函数以源字符串和目标长度作为输入。如果目标比源长,它只是附加。此例程的代码如下所示: - (NSString *) makeStringFrom:(NSString *)source withLength:(NSInteger)le

我正在尝试将字符串写入文本文件。然后,该文本文件将被另一个程序读取。第二个程序希望文本文件中的不同字段具有固定的宽度。因此,当我用我的应用程序编写文本文件时,我需要在实际数据之间添加空格,以使所有内容正确对齐。如何添加这些空间

到目前为止,我已经尝试编写了一个函数,该函数以源字符串和目标长度作为输入。如果目标比源长,它只是附加。此例程的代码如下所示:

- (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; 多次运行。

你犯了一个愚蠢的错误

 [newString stringByAppendingString:@" "];
这将返回一个新字符串,它不会影响调用者对象。你需要储存它

newString=[newString stringByAppendingString:@" "];
或者干脆

[newString appendString:@" "];

你犯了个愚蠢的错误

 [newString stringByAppendingString:@" "];
这将返回一个新字符串,它不会影响调用者对象。你需要储存它

newString=[newString stringByAppendingString:@" "];
或者干脆

[newString appendString:@" "];
您要更改:

[newString stringByAppendingString:@" "];
进入:

您要更改:

[newString stringByAppendingString:@" "];
进入:


NSString上有一个方法就是这样做的。

NSString上有一个方法就是这样做的。

forint i=0;i@AnoopVaidya当前位置这就是我试图看到下面我的答案的原因。我做错什么了吗?不,你没有做同样的事:forint I=0;i@AnoopVaidya当前位置这就是我试图看到下面我的答案的原因。我做错什么了吗?不,你没有做同样的事:谢谢,这实际上看起来是最好的方式。在我编写自己的代码时,如果已经内置了一些东西来做这件事,这对我来说毫无意义。这可能比for循环更优化,for循环可以在同一个runloop中一个接一个地添加十万个空格,而在runloop结束之前不释放任何内容……谢谢,这实际上看起来是最好的方式。在我编写自己的代码时,如果已经内置了一些东西来做这件事,这对我来说毫无意义。而且这个可能比for循环更优化,for循环可以在同一个runloop中一个接一个地添加十万个空格,而在runloop结束之前不会释放任何内容……因为newString是可变的,您应该只使用最后一个表单。因为newString是可变的,所以您应该只使用最后一个表单。