2011-12-28 8 views
11

たとえば、NSStringには少なくとも8個の文字が必要です。ループを使用して左側のパッドスペースを追加するのではなく、それを行うにはどうしますか?ここでNSStringをスペースで埋め込む方法は?

Examples: 

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

私はフォローしていますか? –

+0

[対象のCと左にパディング文字列]の複製が可能です(http://stackoverflow.com/questions/964322/padding-string-to-left-with-objective-c) – Abizern

答えて

17

あなたがそれを行うことができる方法の一例である:私はちょうどこのような何か

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

なぜこのようにしますか?これはすでに 'stringByPaddingToLength:withString:startingAtIndex:'と同じです。あなたは 'str'の宣言の後にすべてを取り除き、代わりに' NSLog(@ "%@"、[str stringByPaddingToLength:add withString:@ "" startingAtIndex:0])を実行することができます。 – Chuck

+0

@Chuckはい、それは私です最初のアイデア。残念ながら、私の理解は、パディング方法が右側のパッドのみで、インデックスの文字を上書きすることです。言い換えれば、ゼロから始めると、8つのスペースの文字列が得られます。 – dasblinkenlight

+0

ああ、そうです、私は明らかに質問を正しく読まなかった。私に構わずに。 – Chuck

8

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

をまた、14は、あなたが欲しいの幅です。

+2

これは壊れています。 –

+0

lengthがintにキャストされ、theStringが14より短い場合は問題ありません。 –

-2

同じ回答が必要な場合は、自分のプロジェクトで使用するために作成する必要がありました。元のコードby dashblinkenlight

- (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; 
} 
+0

' - (NSString *)stringByPaddingToLength:(NSUInteger)newLength withString:(NSString *)padString startingAtIndex:(NSUInteger)padIndex;' –

関連する問題