歌词内容如下:
[ar:王菲]
[al:传奇]
[by:欧阳]
[00:02.00]王菲 - 传奇
[00:06.00]作词:左右 作曲:李健
[00:12.00]
[00:16.00]好歌收藏 带你心飞
[00:22.00]
[00:32.46]只是因为在人群中 多看了你一眼
[00:40.11]再也没能忘掉你容颜
[00:47.59]梦想着偶然能有一天再相见
[00:54.88]从此我开始孤单思念
[01:00.78]
[01:02.03]想你时 你在天边
[01:09.26]想你时 你在眼前
[01:16.70]想你时 你在脑海
[01:24.39]想你时 你在心田
[01:31.62]
[01:32.37]宁愿相信我们前世有缘
[01:38.24]今生的爱情故事 不会再改变
[01:47.03]宁愿用这一生等你发现
[01:53.52]我一直在你身旁 从未走远
[02:03.85]
[02:35.93]只是因为在人群中 多看了你一眼
[02:43.28]再也没能忘掉你容颜
[02:50.70]梦想着偶然能有一天再相见
[02:58.32]从此我开始孤单思念
[03:05.31]
[03:05.61]想你时 你在天边
[03:12.90]想你时 你在眼前
[03:20.31]想你时 你在脑海
[03:27.94]想你时 你在心田
[03:35.38]
[03:36.01]宁愿相信我们前世有缘
[03:42.21]今生的爱情故事 不会再改变
[03:50.87]宁愿用这一生等你发现
[03:57.16]我一直在你身旁 从未走远
[04:05.46]
[04:05.96]宁愿相信我们前世有缘
[04:12.16]今生的爱情故事 不会再改变
[04:20.77]宁愿用这一生等你发现
[04:27.14]我一直在你身旁 从未走远
[04:35.55]
[04:36.72]只是因为在人群中 多看了你一眼
[04:46.17]
Lyric.h
#import <Foundation/Foundation.h>
@interface Lyric : NSObject{
int _time;
NSString * _lyr;
}
-(void)setTime:(int)time;
-(void)setLyr:(NSString *)lyr;
-(int)getTime;
-(NSString *)getLyr;
+(id)createLyr:(int)time andLyr:(NSString *)lyr;
@end
<pre code_snippet_id="504299" snippet_file_name="blog_20141101_16_6870270" name="code" class="objc">Lyric.m
#import "Lyric.h"
@implementation Lyric
-(void)setTime:(int)time{
_time = time;
}
-(void)setLyr:(NSString *)lyr{
_lyr = lyr;
}
-(int)getTime{
return _time;
}
-(NSString *)getLyr{
return _lyr;
}
+(id)createLyr:(int)time andLyr:(NSString *)lyr{
Lyric * lyric = [[Lyric alloc] init];
[lyric setTime:time];
[lyric setLyr:lyr];
return lyric;
}
@end
<pre code_snippet_id="504299" snippet_file_name="blog_20141101_16_6870270" name="code" class="objc">AnalyLyr.h
<span style="font-family: Arial, Helvetica, sans-serif;">#import <Foundation/Foundation.h></span>
@interface AnalyLyr : NSObject{
NSMutableDictionary * _dicLyr;
NSMutableArray * _arrayLyr;
}
//读取歌词文件
-(NSArray *)readLyrFile:(NSString *)filePath;
-(void)analyLyr:(NSString *)filePath;
//显示歌词
-(void)shwoLyr;
-(id)init;
@end
<pre code_snippet_id="504299" snippet_file_name="blog_20141101_16_6870270" name="code" class="objc">AnalyLyr.m
<span style="font-family: Arial, Helvetica, sans-serif;">#import "AnalyLyr.h"</span>
#import "Lyric.h"
@implementation AnalyLyr
-(NSArray *)readLyrFile:(NSString *)filePath{
//读取歌词文件
NSString * fileContent = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
//将歌词内容按'\n'分割
NSArray * arrayLyr = [fileContent componentsSeparatedByString:@"\n"];
return arrayLyr;
}
-(void)analyLyr:(NSString *)filePath{
NSArray * arrayLyr = [self readLyrFile:filePath];
for (int i = 0; i < [arrayLyr count]; i++) {
if ([arrayLyr[i] hasPrefix:@"[0"]) {
//将每一行歌词按‘]’分割成时间和歌词两部分
NSArray * arrayPerLine = [arrayLyr[i] componentsSeparatedByString:@"]"];
//解析时间
int time = [self analyTime:arrayPerLine[0]];
//封装每个歌词对象
Lyric * lyr = [Lyric createLyr:time andLyr:arrayPerLine[1]];
//将每个歌词对象放入数组中
[_arrayLyr addObject:lyr];
//将基础类型int转换为NSNumber类型的对象
NSNumber * numTime = [[NSNumber alloc] initWithInt:time];
//NSLog(@"numTime=%@", numTime);
//将歌词对象放入字典中
[_dicLyr setObject:lyr forKey:numTime];
}
}
[self shwoLyr];
}
//解析时间
- (int)analyTime:(NSString *)timeStr{
NSString * minStr;
NSString * secStr;
if ([timeStr hasPrefix:@"[0"]) {
NSRange range1 = {1, 2};
minStr = [timeStr substringWithRange:range1];
//NSLog(@"minStr=%@", minStr);
NSRange range2 = {4, 2};
secStr = [timeStr substringWithRange:range2];
//NSLog(@"secStr=%@", secStr);
}
int min = [minStr intValue];
int sec = [secStr intValue];
return (min*60 + sec);
}
-(void)shwoLyr{
//获取最后一段歌词的时间,即歌词的总时间长度
int maxTime = [[_arrayLyr lastObject] getTime];
// NSLog(@"maxTime=%d", maxTime);
//NSLog(@"%lu", [_arrayLyr count]);
//NSLog(@"%lu", [_dicLyr count]);
int t = 0;
for(int i = 0; i < maxTime; i++)
{
t++;
[NSThread sleepForTimeInterval:1];
for (NSNumber * time in _dicLyr) {
if ([_dicLyr objectForKey:time] != nil) {
if(t == [[_dicLyr objectForKey:time]getTime])
{
NSLog(@"%@", [[_dicLyr objectForKey:time] getLyr]);
}
}
}
}
}
-(id)init{
if (self = [super init]) {
_dicLyr = [[NSMutableDictionary alloc] init];
_arrayLyr = [[NSMutableArray alloc] init];
}
return self;
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Lyric.h"
#import "AnalyLyr.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
AnalyLyr * lyr = [[AnalyLyr alloc] init];
[lyr analyLyr:@"此处写入歌词文件路径即可"];
}
return 0;
}