iOS NSScanner выбирает определенную строку из 2 разных входов

У меня есть следующая строка стиля, переданная в:

 <p><iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F79039882"></iframe></p> 

а также

<p><iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F82229979&amp;color=ff6600&amp;auto_play=true&amp;show_artwork=true"></iframe></p>

Мне требуется отфильтровать строки "79039882" или "82229979" из заданных строк.

В настоящее время я использую следующий код:

NSString * temp1;
NSScanner *scanner = [NSScanner scannerWithString:label];
            [scanner scanUpToString:@"%2Ftracks%2F" intoString:nil];
            [scanner scanString:@"%2Ftracks%2F" intoString:nil];
            [scanner scanUpToString:@"&" intoString:&temp1];

К сожалению, он не работает со строками, отформатированными как первый. Как бы я мог учесть оба типа?

Когда первый стиль строки передается в результате temp1, это следующее:

79039882"></iframe></p>

1 ответ

Решение

Поскольку вы хотите только цифры, используйте NSCharacterSet который описывает это, наряду с scanCharactersFromSet:intoString:

// Don't create this more than once if possible.
NSCharacterSet * decimalCharSet = [NSCharacterSet decimalDigitCharacterSet];
//...    
[scanner scanCharactersFromSet:decimalCharSet
                    intoString:&temp1];
Другие вопросы по тегам