你好,我有一个像这样的NSString
#EXTM3U #EXT-X-VERSION:3 #EXT-X-ALLOW-CACHE:NO #EXT-X-TARGETDURATION:11 #EXT-X-MEDIA-SEQUENCE:2933 #EXTINF:10.031, media_w687716935_2933.mp3 #EXTINF:10.031, media_w687716935_2934.mp3 #EXTINF:10.031, media_w687716935_2935.mp3
从这个字符串我想得到所有的.mp3文件。我怎样才能做到这一点?请帮帮我。
由于
更新
我这样说
NSRegularExpression *regex2 = [NSRegularExpression regularExpressionWithPattern:@"\\w+(?=\\.mp3)" options:NSRegularExpressionCaseInsensitive error:&error];
[regex2 enumerateMatchesInString:strM3u81 options:0 range:NSMakeRange(0, [strM3u81 length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
}
但这里的块的内部代码不是例外。这有什么不对吗?以及如何获取这些文件名?
答案 0 :(得分:1)
答案 1 :(得分:0)
我在正则表达方面表现不佳,所以我以另一种方式表达。 试试这段代码
NSString *input = @"#EXTM3U\n #EXT-X-VERSION:3\n #EXT-X-ALLOW-CACHE:NO\n #EXT-X-TARGETDURATION:11\n #EXT-X-MEDIA-SEQUENCE:2933\n #EXTINF:10.031,\n media_w687716935_2933.mp3\n #EXTINF:10.031,\n media_w687716935_2934.mp3\n #EXTINF:10.031,\n media_w687716935_2935.mp3";
NSArray *subBreakingLineStrings = [input componentsSeparatedByString:@"\n"];
NSMutableArray *results = [NSMutableArray new];
for (NSString *subString in subBreakingLineStrings) {
if ([subString rangeOfString:@".mp3"].location != NSNotFound) {
[results addObject:subString];
}
}
NSLog(@"result = %@", results);
输出:
result = (
" media_w687716935_2933.mp3",
" media_w687716935_2934.mp3",
" media_w687716935_2935.mp3"
)