1

文字列と数値も含む文字列から NSScanner を使用して文字列を取得するにはどうすればよいですか?

すなわち、001234852ACDSB

結果は 001234852 および ACDSB である必要があります

NSScanner を使用して文字列から数値を取得し、stringByReplaceingOccurrencesOfString を使用して文字列を取得できますが知りたいのですが、NSScanner またはその他の組み込みメソッドを使用して文字列を取得することは可能ですか?

同じ正規表現を知りたいです。

4

3 に答える 3

2

最後に、同じことをグーグルで検索し、ネットからいくつかの情報を調べた後、目的地に到着しました。これで私はコードを投稿しています。これは、私と同じ問題に直面している多くの人を助けるかもしれません.

    NSString *str = @"001234852ACDSB";
    NSScanner *scanner = [NSScanner scannerWithString:str];

    // set it to skip non-numeric characters
    [scanner setCharactersToBeSkipped:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];

    int i;
    while ([scanner scanInt:&i])
    {
        NSLog(@"Found int: %d",i);    //001234852
    }

    // reset the scanner to skip numeric characters
    [scanner setScanLocation:0];
    [scanner setCharactersToBeSkipped:[NSCharacterSet decimalDigitCharacterSet]];

    NSString *resultString;
    while ([scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:&resultString])
    {
        NSLog(@"Found string: %@",resultString);    //ACDSB
    }
于 2011-08-01T04:18:23.437 に答える
2

文字列が常に数字とそれに続く文字で構成されていることを保証できる場合は、 を使用して次のことができますNSScanner

NSScanner *scanner = [NSScanner scannerWithString:@"001234852ACDSB"];

NSString *theNumbers = nil;

[scanner scanCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet]
                    intoString:&theNumbers];

NSString *theLetters = nil;
[scanner scanCharactersFromSet:[NSCharacterSet letterCharacterSet]
                    intoString:&theLetters];

同じものをキャプチャする正規表現は次のようになります。

([0-9]+)([a-zA-Z]+)
于 2011-07-30T05:53:27.077 に答える
0

そのためにスキャナーを使用する必要はありません。

NSString *mixedString = @"01223abcdsadf";

NSString *numbers = [[mixedString componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet]] componentsJoinedByString:@""];

NSString *characters = [[mixedString componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnouprstuwvxyz"] invertedSet]] componentsJoinedByString:@""];

他の可能な解決策については、この質問を参照してください NSStringから数字以外をすべて削除してください

于 2011-07-30T05:48:02.077 に答える