今天给大家一个解析lrc歌词的源码。这是我刚刚学Cocoa的时候写的一点小东西,希望对cocoachina的读者有点用。

几点说明:

1 这个代码是我刚学Cocoa开发的时候写的,仅仅是**能用**,问题挺多的,我一直没时间改。如果你能改改,感谢:)代码用了property和Obj-C 2.0的for循环,所以只能用在Leopard上。

2 这个代码仅仅是提供一个借鉴,你怎么用,没问题。你可以在这个代码上随便修改,也可以看看思路然后写一个自己的。

3 如果你想转载,请保留cocoachina.com这个地址。

4 你可以在你自己的程序中使用这个代码,但是–这个代码如果给你程序造成了什么影响,或者对你的用户造成什么影响,我是不负责的。

5 其实-这个代码是个坏例子。几乎所有初学者能犯的毛病你都能在这个代码中找到蛛丝马迹。

6 不支持ar、ti、al、by标签,但是支持一行多条歌词,以及时间排序。

7 只支持GB2312编码,不支持UTF-8。

用法:

LyricsParser *parser;

NSString *lyricsFile =@"xxx.lrc";

NSFileManager *fm = [NSFileManager defaultManager];

BOOL fileExists = [fm fileExistsAtPath:lyricsFile] ;

if (fileExists)

{

parser=[LyricsParser alloc];

[parser InitWithFilename:lyricsFile];

}


传递一个时间即可获取到歌词:

NSString *durtime=[NSString stringWithFormat:@"%02d:%02d.00",minute, second];

 

[parser getLyrics:durtime:@"%M:%S.%F"];

 
歌词内容:parser.LyricsContent
当前歌词:parser.CurrentLyrics
下一个歌词: parser.NextLyrics
 
详细的实现方法先不写了,我自己也记不太清楚了。

如果你读了上面这几条,还是想看一看的话,请在这里下载。

另外,可能你对[parser getLyrics:durtime:@"%M:%S.%F"]; 这种写法有点晕。说实在的我现在自己看也觉得晕,而且它竟然能用。