Сканирование от последнего символа до конца строки с помощью NSScanner - PullRequest
4 голосов
/ 20 марта 2010

Учитывая строку, такую ​​как: "new / path - path / path / 03 - filename.ext", как я могу использовать NSScanner (или любой другой подход), чтобы возвратить подстроку из последней "/" в конец строка, то есть "03 - filename.ext"? Код, с которого я пытался начать:

while ([fileScanner isAtEnd] == NO){
    slashPresent = [fileScanner scanUpToString:@"/" intoString:NULL];
    if (slashPresent == YES) {
        [fileScanner scanString:@"/" intoString:NULL];
        lastPosition = [fileScanner scanLocation];
    }
    NSLog(@"fileScanner position: %d", [fileScanner scanLocation]);
    NSLog(@"lastPosition: %d", lastPosition);       
}

... и это приводит к ошибке сегмента после сканирования до конца строки! Я не уверен, почему это не работает. Идеи? Заранее спасибо!

1 Ответ

11 голосов
/ 20 марта 2010
NSString *thePath = @"new/path - path/path/03 - filename.ext";
NSString *lastPathComponent = [thePath lastPathComponent]; // "03 - filename.ext"

Изменить, чтобы ответить на ваши последующие. Вам не нужен NSScanner:

NSString *thePath = @"new/path - path/path/03 - filename.ext";
NSRange theRange = [thePath rangeOfString:@"/" options:NSBackwardsSearch];
NSString *lastPathComponent = nil;
if (theRange.location != NSNotFound)
    lastPathComponent = [thePath substringFromIndex:theRange.location];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...