отфильтровать строку с помощью NSScanner и удалить пробел после числового символа - PullRequest
1 голос
/ 06 января 2012

Я пытался отфильтровать строку со следующим кодом:

//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, но и завершающий пробел.

Любые подсказки, пожалуйста?

1 Ответ

1 голос
/ 07 января 2012

Я не очень много использовал NSScanner, но я думаю, что ваша проблема здесь в том, что по умолчанию NSScanner пропускает пробелы и символы новой строки при сканировании. Ваш код будет работать, если вы добавите эту строку после создания экземпляра объекта сканера:

[scanner setCharactersToBeSkipped:nil];
...