12

から先頭のゼロを削除するにはどうすればよいNSStringですか?

たとえば、私は持っています:

NSString *myString;

@"0002060"@"00236"およびなどの値を使用します@"21456"

先頭のゼロが発生した場合は削除したい:

@"2060"例 前を、@"236"およびに変換し@"21456"ます。

ありがとう。

4

5 に答える 5

31

小さい数の場合:

NSString *str = @"000123";      
NSString *clean = [NSString stringWithFormat:@"%d", [str intValue]];

int32 範囲を超える数値の場合:

NSString *str = @"100004378121454";     
NSString *clean = [NSString stringWithFormat:@"%d", [str longLongValue]]; 
于 2012-05-10T09:14:01.547 に答える
17

これは、実際には正規表現に完全に適したケースです。

NSString *str = @"00000123";

NSString *cleaned = [str stringByReplacingOccurrencesOfString:@"^0+"              
                                                   withString:@"" 
                                                      options:NSRegularExpressionSearch 
                                                        range:NSMakeRange(0, str.length)];

コードは 1 行のみ (論理的な意味で、わかりやすくするために改行が追加されています) であり、処理する文字数に制限はありません。

正規表現パターンの簡単な説明:

^、パターンを文字列の先頭に固定する必要があることを意味します。一連の数字内の正当なゼロと一致しないようにするために、これが必要です。

この0+部分は、1 つ以上のゼロに一致する必要があることを意味します。

まとめると、文字列の先頭にある 1 つ以上のゼロのシーケンスに一致し、それを空の文字列に置き換えます。つまり、先頭のゼロを削除します。

于 2012-05-11T05:51:10.967 に答える
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);
于 2012-05-11T05:13:57.370 に答える
1

アダリの答えに加えて、文字列が長すぎる(つまり9文字を超える)ことが心配な場合は、次のことができます。

NSString *str = @"000200001111111";
NSString *strippedStr = [NSString stringWithFormat:@"%lld", [temp longLongValue]];

これにより、結果が得られます:200001111111

それ以外の場合は、[NSString stringWithFormat:@"%d", [temp intValue]]オーバーフローのためにおそらく 2147483647 が返されます。

于 2013-02-27T15:55:50.707 に答える
1
 - (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;

 }
于 2012-05-10T09:33:02.990 に答える