1

重複の可能性:
文字列から先行ゼロを削除する

文字列の先頭から0を削除し、ユーザーが数値を入力するときに先頭の0を防ぐ必要がありますが、どうすればよいですか?

例:ユーザー入力:000090表示:90

ありがとう!

4

1 に答える 1

1

1つのアプローチは、NSScanner:を使用することです。

NSString *string = @"000090";
NSCharacterSet *nonzeroNumberCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"123456789"];
NSScanner *scanner = [NSScanner scannerWithString:string];
[scanner scanUpToCharactersFromSet:nonzeroNumberCharacterSet intoString:nil];
NSString *remainder = nil;
NSCharacterSet *emptyCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@""];
[scanner scanUpToCharactersFromSet:emptyCharacterSet intoString:&remainder];

この時点remainderではに等しくなり@"90"ます。

同様に、行を置き換えることができます

NSCharacterSet *nonzeroNumberCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"123456789"];
NSScanner *scanner = [NSScanner scannerWithString:string];

NSCharacterSet *zeroNumberCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"0"];
[scanner scanCharactersFromSet:zeroNumberCharacterSet intoString:nil];

最初のゼロ以外の数値までスキャンするのではなく、すべてのゼロを超えてスキャンします。

このアプローチの欠点の1つは、元の文字列がである場合@"000000000"、結果の文字列が空になることです。

于 2012-11-07T14:36:20.833 に答える