1

次のコードで文字列をフィルタリングしようとしています。

//the String with the original text  
NSString *unfilteredString = @"( A1 )";  
//initialize a string that will hold the result  
NSMutableString *resultString = [NSMutableString stringWithCapacity:unfilteredString.length];  

NSScanner *scanner = [NSScanner scannerWithString:unfilteredString];  
NSCharacterSet *allowedChars = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];  

while ([scanner isAtEnd] == NO) {  
    NSString *buffer;  
    if ([scanner scanCharactersFromSet:allowedChars intoString:&buffer]) {  
        [resultString appendString:buffer];       
    } 
    else {  
        [scanner setScanLocation:([scanner scanLocation] + 1)];  
    }  
}  
NSLog (@"Result: %@", resultString);

結果が得られます:

結果: ( A)

ご覧のとおり、数字の 1 だけでなく末尾のスペースも削除されています。

ヒントはありますか?

4

1 に答える 1

1

私は NSScanner をあまり使用していませんが、ここでの問題は、デフォルトで NSScanner がスキャン時に空白と改行をスキップすることだと思います。スキャナ オブジェクトをインスタンス化した後に次の行を追加すると、コードが機能します。

[scanner setCharactersToBeSkipped:nil];
于 2012-01-06T22:50:07.407 に答える