我正在将* .srt字幕文件读入NSString。此字符串的内容如下所示:
1
00:00:20,000 --> 00:00:24,400
Altocumulus clouds occur between six thousand
2
00:00:24,600 --> 00:00:27,800
and twenty thousand feet above ground level.
我正在寻找一种优雅的解决方案,将此字符串拆分为NSArray,其中每个元素包含与一个特定字幕相关的信息 - “帧”,例如第0个元素看起来像这样:
1
00:00:20,000 --> 00:00:24,400
Altocumulus clouds occur between six thousand
任何想法如何以优雅的方式完成这项任务?我尝试使用方法
拆分原始字符串[string componentsSeparatedByString:@"\n\n"];
但是这种方法无法检测到空行..
感谢您的帮助!
TOBI
答案 0 :(得分:6)
如果[string componentsSeparatedByString:@"\n\n"]
不起作用,则有两种可能性:
您的文件包含MSDOS样式的换行符,\r\n
。因此,请尝试拆分@"\r\n\r\n"
。
您所谓的空白行包含空格或制表符。您可以使用cat -e
从shell中检查此内容。
答案 1 :(得分:4)
我建议改用NSScanner
。它更灵活,您不必担心您的换行符是Windows还是Unix样式以及空行是否包含任何空格。这是一个例子:
NSMutableArray *lines = [NSMutableArray array];
NSString *s = @"foo\n\nbar\r\n \t \r\nbaz"; //intentionally mixed line breaks
NSScanner *scanner = [NSScanner scannerWithString:s];
while (![scanner isAtEnd]) {
[scanner scanCharactersFromSet:[NSCharacterSet newlineCharacterSet] intoString:NULL];
NSString *line = nil;
[scanner scanUpToCharactersFromSet:[NSCharacterSet newlineCharacterSet] intoString:&line];
if (line) {
[lines addObject:line];
}
}
NSLog(@"%@", lines);
答案 2 :(得分:0)
根据http://en.wikipedia.org/wiki/SubRip,换行符是CRLF,即\r\n
。