から先頭のゼロを削除するにはどうすればよいNSString
ですか?
たとえば、私は持っています:
NSString *myString;
@"0002060"
、@"00236"
およびなどの値を使用します@"21456"
。
先頭のゼロが発生した場合は削除したい:
@"2060"
例 前を、@"236"
およびに変換し@"21456"
ます。
ありがとう。
から先頭のゼロを削除するにはどうすればよいNSString
ですか?
たとえば、私は持っています:
NSString *myString;
@"0002060"
、@"00236"
およびなどの値を使用します@"21456"
。
先頭のゼロが発生した場合は削除したい:
@"2060"
例 前を、@"236"
およびに変換し@"21456"
ます。
ありがとう。
小さい数の場合:
NSString *str = @"000123";
NSString *clean = [NSString stringWithFormat:@"%d", [str intValue]];
int32 範囲を超える数値の場合:
NSString *str = @"100004378121454";
NSString *clean = [NSString stringWithFormat:@"%d", [str longLongValue]];
これは、実際には正規表現に完全に適したケースです。
NSString *str = @"00000123";
NSString *cleaned = [str stringByReplacingOccurrencesOfString:@"^0+"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, str.length)];
コードは 1 行のみ (論理的な意味で、わかりやすくするために改行が追加されています) であり、処理する文字数に制限はありません。
正規表現パターンの簡単な説明:
は^
、パターンを文字列の先頭に固定する必要があることを意味します。一連の数字内の正当なゼロと一致しないようにするために、これが必要です。
この0+
部分は、1 つ以上のゼロに一致する必要があることを意味します。
まとめると、文字列の先頭にある 1 つ以上のゼロのシーケンスに一致し、それを空の文字列に置き換えます。つまり、先頭のゼロを削除します。
次のメソッドも出力を提供します。
NSString *test = @"0005603235644056";
// Skip leading zeros
NSScanner *scanner = [NSScanner scannerWithString:test];
NSCharacterSet *zeros = [NSCharacterSet
characterSetWithCharactersInString:@"0"];
[scanner scanCharactersFromSet:zeros intoString:NULL];
// Get the rest of the string and log it
NSString *result = [test substringFromIndex:[scanner scanLocation]];
NSLog(@"%@ reduced to %@", test, result);
アダリの答えに加えて、文字列が長すぎる(つまり9文字を超える)ことが心配な場合は、次のことができます。
NSString *str = @"000200001111111";
NSString *strippedStr = [NSString stringWithFormat:@"%lld", [temp longLongValue]];
これにより、結果が得られます:200001111111
それ以外の場合は、[NSString stringWithFormat:@"%d", [temp intValue]]
オーバーフローのためにおそらく 2147483647 が返されます。
- (NSString *) removeLeadingZeros:(NSString *)Instring
{
NSString *str2 =Instring ;
for (int index=0; index<[str2 length]; index++)
{
if([str2 hasPrefix:@"0"])
str2 =[str2 substringFromIndex:1];
else
break;
}
return str2;
}