重複の可能性:
文字列から先行ゼロを削除する
文字列の先頭から0を削除し、ユーザーが数値を入力するときに先頭の0を防ぐ必要がありますが、どうすればよいですか?
例:ユーザー入力:000090表示:90
ありがとう!
重複の可能性:
文字列から先行ゼロを削除する
文字列の先頭から0を削除し、ユーザーが数値を入力するときに先頭の0を防ぐ必要がありますが、どうすればよいですか?
例:ユーザー入力:000090表示:90
ありがとう!
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"
、結果の文字列が空になることです。