IOS 解析歌詞lrc – iPhone手機開發技術文章 iPhone軟體開發教學課程

最近在搗鼓音樂播放器,過程中學到瞭一些東西,寫下來分享一下,首先是歌詞的解析

 

首先我們看看lrc(不貼維基瞭怕打不開

 

歌詞文件一般是這樣的格式

 

1.[分鐘:秒.毫秒] 歌詞

 

2. [分鐘:秒] 歌詞

 

3. [分鐘:秒:毫秒] 歌詞

 

其中1是標準格式,下面我就一種為例。

 

思路是先獲取整個歌詞內容,再按換行分段,對每一行中的內容,分為兩部分,時間和內容,分別提取。

 

     -(void)parselyric

   {

      NSString *path = [[NSBundle mainBundle]pathForResource:_lab_title.text ofType:@"lrc"];

    

      //if lyric file exits

      if ([path length]) {

        

        //get the lyric string

        NSString *lyc = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

        

        //init

        _musictime = [[NSMutableArray alloc]init];

        _lyrics = [[NSMutableArray alloc]init];

        _t = [[NSMutableArray alloc]init];

        

        NSArray *arr = [lyc componentsSeparatedByString:@"\n"];

        

        for (NSString *item in arr) {

            

            //if item is not empty

            if ([item length]) {

                

                NSRange startrange = [item rangeOfString:@"["];

                NSLog(@"%d%d",startrange.length,startrange.location);

                NSRange stoprange = [item rangeOfString:@"]"];

                

                NSString *content = [item substringWithRange:NSMakeRange(startrange.location+1, stoprange.location-startrange.location-1)];

                

                NSLog(@"%d",[item length]);

                

                //the music time format is mm.ss.xx such as 00:03.84

                if ([content length] == 8) {

                    NSString *minute = [content substringWithRange:NSMakeRange(0, 2)];

                    NSString *second = [content substringWithRange:NSMakeRange(3, 2)];

                    NSString *mm = [content substringWithRange:NSMakeRange(6, 2)];

                    

                    NSString *time = [NSString stringWithFormat:@"%@:%@.%@",minute,second,mm];

                    NSNumber *total =[NSNumber numberWithInteger:[minute integerValue] * 60 + [second integerValue]];

                    [_t addObject:total];

                    

                    NSString *lyric = [item substringFromIndex:10];

                    

                    [_musictime addObject:time];

                    [_lyrics addObject:lyric];

                }

            }

        }

    }

    else

        _lyrics = nil;

發佈留言