1

テキストファイルに文字列を書き込もうとしています。そのテキスト ファイルは、別のプログラムによって読み取られます。その 2 番目のプログラムは、テキスト ファイル内のさまざまな「フィールド」が固定幅であると想定しています。したがって、アプリでテキスト ファイルを書き込むときは、実際のデータの間にスペースを追加して、すべてを正しく並べる必要があります。これらのスペースを追加するにはどうすればよいですか?


ここまでで、ソース文字列とターゲットの長さを入力として受け取る関数を作成してみました。ターゲットがソースよりも長い場合は、単に " " を追加します。このルーチンのコードは次のとおりです。

- (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"); 複数回実行されます。

4

3 に答える 3

4

これを行うstringByPaddingToLength:withString:startingAtIndex:メソッドがありNSStringます。

于 2013-04-11T14:21:41.487 に答える
1

あなたはここでばかげた間違いをしました

 [newString stringByAppendingString:@" "];

これは新しい文字列を返しますが、呼び出し元オブジェクトには影響しません。あなたはそれを保存する必要があります

newString=[newString stringByAppendingString:@" "];

または単に

[newString appendString:@" "];
于 2013-04-11T14:18:13.927 に答える