たとえば、NSStringには少なくとも8個の文字が必要です。ループを使用して左側のパッドスペースを追加するのではなく、それを行うにはどうしますか?ここでNSStringをスペースで埋め込む方法は?
Examples:
Input: |Output:
Hello | Hello
Bye | Bye
Very Long |Very Long
abc | abc
たとえば、NSStringには少なくとも8個の文字が必要です。ループを使用して左側のパッドスペースを追加するのではなく、それを行うにはどうしますか?ここでNSStringをスペースで埋め込む方法は?
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;
}
なぜこのようにしますか?これはすでに 'stringByPaddingToLength:withString:startingAtIndex:'と同じです。あなたは 'str'の宣言の後にすべてを取り除き、代わりに' NSLog(@ "%@"、[str stringByPaddingToLength:add withString:@ "" startingAtIndex:0])を実行することができます。 – Chuck
@Chuckはい、それは私です最初のアイデア。残念ながら、私の理解は、パディング方法が右側のパッドのみで、インデックスの文字を上書きすることです。言い換えれば、ゼロから始めると、8つのスペースの文字列が得られます。 – dasblinkenlight
ああ、そうです、私は明らかに質問を正しく読まなかった。私に構わずに。 – Chuck
:
NSLog(@"%*c%@", 14 - theString.length, ' ', theString);
をまた、14
は、あなたが欲しいの幅です。
これは壊れています。 –
lengthがintにキャストされ、theStringが14より短い場合は問題ありません。 –
同じ回答が必要な場合は、自分のプロジェクトで使用するために作成する必要がありました。元のコード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;
}
' - (NSString *)stringByPaddingToLength:(NSUInteger)newLength withString:(NSString *)padString startingAtIndex:(NSUInteger)padIndex;' –
私はフォローしていますか? –
[対象のCと左にパディング文字列]の複製が可能です(http://stackoverflow.com/questions/964322/padding-string-to-left-with-objective-c) – Abizern