どのようにして目的の文字列cを左にパディングできますか? 例えば、私は6の整数値を持っている場合、私は私がstringByPaddingToLength:
を使用しますが、60左へのパディング文字列
あなたの助けがはるかに高く評価されるように、それは右にそれをパッドには06
として表示させたいです。
どのようにして目的の文字列cを左にパディングできますか? 例えば、私は6の整数値を持っている場合、私は私がstringByPaddingToLength:
を使用しますが、60左へのパディング文字列
あなたの助けがはるかに高く評価されるように、それは右にそれをパッドには06
として表示させたいです。
+ (NSString *)formatValue:(int)value forDigits:(int)zeros {
NSString *format = [NSString stringWithFormat:@"%%0%dd", zeros];
return [NSString stringWithFormat:format,value];
}
このパッドには10個のゼロが残っています。
NSString *padded = [NSString stringWithFormat:@"Padded left with zeros: %010d", 65];
65は、NSStringのだったらどう?型変換を行わずにこれを処理するフォーマッタはありますか? –
不器用ですが、それは仕事をします。
@implementation NSString (LeftPadding)
- (NSString *)stringByPaddingTheLeftToLength:(NSUInteger)newLength withString:(NSString *)padString startingAtIndex:(NSUInteger)padIndex
{
if ([self length] <= newLength)
return [[@"" stringByPaddingToLength:newLength - [self length] withString:padString startingAtIndex:padIndex] stringByAppendingString:self];
else
return [[self copy] autorelease];
}
@end
次に、あなたが行うことができます:
NSString *test1 = [@"6" stringByPaddingTheLeftToLength:10 withString:@"0" startingAtIndex:0];
// test1 = "0000000006"
NSString *test2 = [@"asdf" stringByPaddingTheLeftToLength:10 withString:@"qwer" startingAtIndex:0];
// test2 = "qwerqwasdf"
NSString *test3 = [@"More than ten characters" stringByPaddingTheLeftToLength:10 withString:@"bamboo" startingAtIndex:0];
// test3 = "More than ten characters"
NSString *test4 = [test3 stringByPaddingTheLeftToLength:100 withString:test2 startingAtIndex:0];
// test4 = "qwerqwasdfqwerqwasdfqwerqwasdf...qwerqMore than ten characters"
これは "aString"が "self"の場合に有効です。ありがとう。 – TPoschel
まったく不器用です!特に、パディングされるオブジェクトが文字列ではなく、数字である場合。ところで、 'startingAtIndex'パラメータはもはや必要ではありません。 –
旧スレッド、私が知っているが、これは左パッドに便利な方法です。私はUtilクラスを持っています。必要に応じて右パッドに適応させることができます。一番重要なのは、どんなパディングでも動作することです。
+ (NSString *) leftPadString:(NSString *)s withPadding:(NSString *)padding {
NSString *padded = [padding stringByAppendingString:s];
return [padded substringFromIndex:[padded length] - [padding length]];
}
ARCおよび非ARC準拠。 :)
これを呼び出すには、[Util leftPadString:@"42" withPadding:@"0000"];
を使用します。
NSStringのカテゴリに入れて、[@"42" stringByLeftPadding:@"0000"]
のようなさらに簡単な呼び出しを行うこともできます。
はどちらも(*
プレースホルダを使用して)completnessのためにあなた0042.
ありがとう、右のパッド文字列は、それを望む人のためにここにあります: - (NSString *)rightPadString:(NSString *)s withPadding:(NSString *)パディング{ NSString * padded = [s stringByAppendingString:padding]; 戻り値[padded substringToIndex:[パディング長]]; } – lppier
を与える:
NSString *paddedNumberString = [NSString stringWithFormat:@"%0*d", amountOfZeros, numberNSInteger]
整数の代わりに文字列の左に0を追加するとどうなりますか?だからもし私がこんにちは私は000helloが欲しいですか? – hzxu
ありがとうございます!!!!!))))) – Alex
可変長フォーマットを構築するのではなく、可変フィールド長を使用するだけです。 '[NSString stringWithFormat:@"%0 * d "、0、value];'? – dreamlax