/**************************************************/

/*******************-main文件-***********************/

/**************************************************/

#import <Foundation/Foundation.h>

#import "lrcContent.h"

#import "lrcManager.h"

int main(int argc, const char * argv[])

{

@autoreleasepool

{

lrcManager *lrcM=[[lrcManager alloc] init];

[lrcM showLrc];

}

return 0;

}

/**************************************************/

/***************-lrcManager.h文件-********************/

/**************************************************/

#import <Foundation/Foundation.h>

#import "lrcContent.h"

#define PATH @"/Users/paul/Desktop/legend.txt"

@interface lrcManager : NSObject

@property NSArray *lrcArray;          //存放每行的歌词

-(BOOL)isMessage:(NSString *)lineContent;                               //判断是否是歌词的其他信息,如歌手名,作词,作曲

-(NSMutableArray *)getLrcFileContent:(NSString *)path;            //读取歌词文件内容

-(lrcContent *)polishLrc:(NSMutableArray *)lineArr;                    //处理单行歌词

-(lrcContent *)sortLrc:(lrcContent *)lrcContent;                          //对歌词进行排序(根据歌词前的时间)

-(void)showLrc;                                                                        //显示歌词内容

@end

/**************************************************/

/***************-lrcManager.m文件-********************/

/**************************************************/

#import "lrcManager.h"

@implementation lrcManager

-(id)init

{

if(self=[super init])

{

_lrcC=[[lrcContent alloc] init];

_lrcArray=[[NSArray alloc] init];

_lrcC.lrc=[[NSMutableArray alloc] init];

_lrcC.message=[[NSMutableArray alloc] init];

_lrcC.content=@"";

_lrcC.time=0.0;

}

return self;

}

-(BOOL)isMessage:(NSString *)lineContent

{

int flag=0;

if([lineContent intValue])

{

flag=1;

}

return flag;

}

-(NSMutableArray *)getLrcFileContent:(NSString *)path

{

//将单句歌词分割放入动态数组

NSString *fileContent=[[NSString alloc] initWithContentsOfFile:PATH encoding:NSUTF8StringEncoding error:nil];

NSArray *arrFileContent=[fileContent componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"\n"]];

NSMutableArray *mArrFileContent=[[NSMutableArray alloc] initWithArray:arrFileContent];

[mArrFileContent removeObject:@""];

return mArrFileContent;

}

-(lrcContent *)polishLrc:(NSString *)lineStr

{

NSArray *arrLine=[lineStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"[:]"]];

NSMutableArray *mArrLine=[[NSMutableArray alloc] initWithArray:arrLine];

[mArrLine removeObject:@""];

if(![self isMessage:[mArrLine objectAtIndex:1]])

{

//歌曲信息

[_lrcC.message addObject:[mArrLine objectAtIndex:1]];

}

else

{

//歌词

if([[mArrLine lastObject] intValue]==0)

{

for(int i=0;i<[mArrLine count]-1;i+=2)

{

NSString *s=[[NSString alloc] initWithFormat:@"%f",([[mArrLine objectAtIndex:i] floatValue]*60+[[mArrLine objectAtIndex:i+1] floatValue])];

[_lrcC.lrc addObject:s];

[_lrcC.lrc addObject:[mArrLine lastObject]];

}

}

}

return _lrcC;

}

-(lrcContent *)sortLrc:(lrcContent *)lrcContent

{

NSMutableArray *mArr=[[NSMutableArray alloc] initWithArray:lrcContent.lrc];

for(int i=0;i<[mArr count]-2;i+=2)

{

for(int j=i+2;j<[mArr count];j+=2)

{

if(([[mArr objectAtIndex:j] floatValue])<([[mArr objectAtIndex:i] floatValue]))

{

[mArr exchangeObjectAtIndex:i withObjectAtIndex:j];

[mArr exchangeObjectAtIndex:i+1 withObjectAtIndex:j+1];

}

}

}

lrcContent.lrc=mArr;

return lrcContent;

}

-(void)showLrc

{

lrcManager *lrcM=[[lrcManager alloc] init];

for (int i=0; i<[[self getLrcFileContent:PATH] count]; i++)

{

_lrcC=[lrcM polishLrc:[[lrcM getLrcFileContent:PATH] objectAtIndex:i]];

}

lrcM.lrcC=[lrcM sortLrc:_lrcC];

for(int i=1;i<[_lrcC.lrc count];i+=2)

{

NSLog(@"%@",[_lrcC.lrc objectAtIndex:i]);

sleep(1);

}

}

@end

/**************************************************/

/***************-lrcContent.h文件-********************/

/**************************************************/

#import <Foundation/Foundation.h>

@interface lrcContent : NSObject

@property NSMutableArray *message;      //存放歌词的其他信息

@property NSMutableArray *lrc;               //存放歌词每行

@property NSString *content;                  //存放单行歌词

@property float time;                               //存放歌词的出现时间

@end

/**************************************************/

/***************-lrcContent.m文件-********************/

/**************************************************/

#import "lrcContent.h"

@implementation lrcContent

-(id)init

{

if(self=[super init])

{

_message=[[NSMutableArray alloc] init];

_lrc=[[NSMutableArray alloc] init];

_content=@"";

_time=0.0;

}

return self;

}

@end

/**************************************************/

/*******************-歌词示例文件-********************/

/**************************************************/

[ti:传奇]
[ar:王菲]

[00:03.50]传奇
[00:19.10]作词:刘兵 作曲:李健
[00:20.60]演唱:王菲
[00:26.60]
[04:40.75][02:39.90][00:36.25]只是因为在人群中多看了你一眼
[04:49.00]
[02:47.44][00:43.69]再也没能忘掉你容颜
[02:54.83][00:51.24]梦想着偶然能有一天再相见
[03:02.32][00:58.75]从此我开始孤单思念
[03:08.15][01:04.30]
[03:09.35][01:05.50]想你时你在天边
[03:16.90][01:13.13]想你时你在眼前
[03:24.42][01:20.92]想你时你在脑海
[03:31.85][01:28.44]想你时你在心田
[03:38.67][01:35.05]
[04:09.96][03:39.87][01:36.25]宁愿相信我们前世有约
[04:16.37][03:46.38][01:42.47]今生的爱情故事 不会再改变
[04:24.82][03:54.83][01:51.18]宁愿用这一生等你发现
[04:31.38][04:01.40][01:57.43]我一直在你身旁 从未走远
[04:39.55][04:09.00][02:07.85]

/**************************************************/

/*******************-程序运行示例-********************/

/**************************************************/

2015-08-10 22:16:30.271 myLrcReader[5185:198636] 传奇

2015-08-10 22:16:31.272 myLrcReader[5185:198636] 作词:刘兵作曲:李健

2015-08-10 22:16:32.278 myLrcReader[5185:198636] 演唱:王菲

2015-08-10 22:16:33.281 myLrcReader[5185:198636] 只是因为在人群中多看了你一眼

2015-08-10 22:16:34.283 myLrcReader[5185:198636] 再也没能忘掉你容颜

2015-08-10 22:16:35.288 myLrcReader[5185:198636] 梦想着偶然能有一天再相见

2015-08-10 22:16:36.290 myLrcReader[5185:198636] 从此我开始孤单思念

2015-08-10 22:16:37.296 myLrcReader[5185:198636] 想你时你在天边

2015-08-10 22:16:38.298 myLrcReader[5185:198636] 想你时你在眼前

2015-08-10 22:16:39.298 myLrcReader[5185:198636] 想你时你在脑海

2015-08-10 22:16:40.299 myLrcReader[5185:198636] 想你时你在心田

2015-08-10 22:16:41.303 myLrcReader[5185:198636] 宁愿相信我们前世有约

2015-08-10 22:16:42.308 myLrcReader[5185:198636] 今生的爱情故事不会再改变

2015-08-10 22:16:43.314 myLrcReader[5185:198636] 宁愿用这一生等你发现

2015-08-10 22:16:44.315 myLrcReader[5185:198636] 我一直在你身旁从未走远

2015-08-10 22:16:45.318 myLrcReader[5185:198636] 只是因为在人群中多看了你一眼

2015-08-10 22:16:46.320 myLrcReader[5185:198636] 再也没能忘掉你容颜

2015-08-10 22:16:47.324 myLrcReader[5185:198636] 梦想着偶然能有一天再相见

2015-08-10 22:16:48.329 myLrcReader[5185:198636] 从此我开始孤单思念

2015-08-10 22:16:49.333 myLrcReader[5185:198636] 想你时你在天边

2015-08-10 22:16:50.335 myLrcReader[5185:198636] 想你时你在眼前

2015-08-10 22:16:51.337 myLrcReader[5185:198636] 想你时你在脑海

2015-08-10 22:16:52.343 myLrcReader[5185:198636] 想你时你在心田

2015-08-10 22:16:53.348 myLrcReader[5185:198636] 宁愿相信我们前世有约

2015-08-10 22:16:54.349 myLrcReader[5185:198636] 今生的爱情故事不会再改变

2015-08-10 22:16:55.352 myLrcReader[5185:198636] 宁愿用这一生等你发现

2015-08-10 22:16:56.354 myLrcReader[5185:198636] 我一直在你身旁从未走远

2015-08-10 22:16:57.359 myLrcReader[5185:198636] 宁愿相信我们前世有约

2015-08-10 22:16:58.361 myLrcReader[5185:198636] 今生的爱情故事不会再改变

2015-08-10 22:16:59.366 myLrcReader[5185:198636] 宁愿用这一生等你发现

2015-08-10 22:17:00.369 myLrcReader[5185:198636] 我一直在你身旁从未走远

2015-08-10 22:17:01.372 myLrcReader[5185:198636] 只是因为在人群中多看了你一眼

转载于:https://www.cnblogs.com/PaulpauL/p/4719532.html

LRC歌词文件读取代码相关推荐

  1. python srt字幕转lrc歌词文件

    当想要把电影或者视频的音频转成mp3在手机或者设备上听的时候,或者是用来练英语听力的时候,那么,就需要把相关的srt字幕文件,转换成lrc的歌词文件. 搜了很多网上的,都没有这个代码,只有lrc转sr ...

  2. 【Java代码】MP3、flac歌曲批量生成同名的“xxx.lrc”歌词文件导入索尼黑砖二代

    目录 1.准备条件 2.实现方式 3.代码环境和maven依赖 4.Java代码 5.示例1结果 6.示例2结果 7.一个小问题 8."音乐标签"下载地址 1.准备条件 网易云下载 ...

  3. MP3制作之LRC歌词文件解析(附:源代码)

    LRC 歌词同步 一.准备工作   既然要制作歌词同步程序,首先要准备一首歌,我们就以"周杰伦-青花瓷"为例.首先要下载这首"青花瓷.mp3",保存为" ...

  4. android mp3 lrc歌词文件utf-8歌词显示为乱码,百度歌词显示乱码 LRC歌词批量转换 UTF-8编码批量转换为GB或ANSI 文本编码批量转换...

    百度歌词显示乱码LRC歌词批量转换UTF-8编码批量转换为GB或ANSI 文本编码批量转换 当从百度下载很多歌词的时候,发现在一些MP3上播放总是显示乱码,这时以为是MP3的问题或者是百度歌词的问题, ...

  5. c# 操作Lrc歌词文件 的类

    写了一天吧,完成了c#操作歌词的类.具体用法里面都有解释,还不够完美,因为没有完美的东西.如果觉得好就给我留个言吧!非常感谢. 本人不才,菜鸟一个.... 歌词的类,注意命名空间我还没改. using ...

  6. 怎样制作Lrc歌词文件

    首先,推荐大家使用千千静听,又能听歌,又能制作和调整歌词,感觉真的不错! 要制作歌词文件,就要用到"歌词秀"了,千千静听打开后,再打开歌词秀,右键选"编辑歌词" ...

  7. android mp3 lrc歌词文件utf-8歌词显示为乱码,Android读取本地json文件的方法(解决显示乱码问题)...

    本文实例讲述了Android读取本地json文件的方法.分享给大家供大家参考,具体如下: 1.读取本地JSON ,但是显示汉字乱码 public static String readLocalJson ...

  8. AS3同步LRC歌词的MP3播放器.

    [组件版本]:0.5 [功能简述]:LRCParser组件是用来解析lrc歌词文件的代码类组件. [运行平台]:Flash CS3,ActionScript3,Flash Player 9 + [功能 ...

  9. android 读取歌词.qrc,Unity读取lrc歌词并显示出来

    为什么做lrc歌词呢,其他精确的qrc之类的都是加密的,读取出来是乱码,参照了https://blog.csdn.net/chuan403082010/article/details/61912873 ...

  10. 我的Android进阶之旅------Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能...

    前言 一LRC歌词文件简介 1什么是LRC歌词文件 2LRC歌词文件的格式 LRC歌词文件的标签类型 1标识标签 2时间标签 二解析LRC歌词 1读取出歌词文件 2解析得到的歌词内容 1表示每行歌词内 ...

最新文章

  1. 比杠精网友更可怕的,是懂王同事
  2. 函数加上简单用户名密码认证
  3. agv matlab应用,简单介绍一下agv调度控制系统常见的软件应用
  4. 文献学习(part33)--Clustering by fast search and find of density peaks
  5. rdlc报表 矩形高固定_固定资产管理系统_简化资产管理流程
  6. nested set model应用系列文章-基于后根跳跃遍历的规则匹配算法
  7. 【王牌选手分享】一发问鼎!鹅厂大神上分思路,助你玩转初赛!
  8. CToolBarCtrl工具栏设置总结(转)
  9. C++模板类之pair
  10. 思科2960g端口限速配置
  11. Linux系统如何把一个文件传递到另一个机器上
  12. Bibles_Numpy离线文档
  13. 计算机地质制图CAD,CAD地质制图线型
  14. android ukey,4uKey for Android
  15. kindeditor php 漏洞,KindEditor漏洞、优化以及漏洞、BUG修复方案汇总
  16. GitHub AI 编程工具自动写代码神器Copilot插件体验
  17. 连接中控指纹考勤机 zkemkeeper zksoftware ZKTeco
  18. 史上最全的前端资源汇总(下)
  19. Linux:库函数:libc: glibc
  20. ps怎么把白色背景变透明

热门文章

  1. html5 3d 图片动画制作软件,9款令人惊叹的HTML5 3D动画应用
  2. python爬虫qq音乐歌词_10、 在QQ音乐中爬取某首歌曲的歌词
  3. python字符串加减乘除_从字符串解析加减乘除符号
  4. persistent
  5. LIO-SAM论文与代码阅读笔记(二)代码阅读:imuPreintergration.cpp和imageProjection.cpp
  6. android手机无分区无法刷机,adb sideload 刷机教程:当你手机无法开机,内存里没有ROM时......
  7. 利器!推荐一个记忆方法:间隔记忆法(利用艾宾浩斯遗忘曲线制定)
  8. 柴静十年成长的个人告白 - 读《看见》
  9. 抽象工厂模式,加工出不可思议的产品!
  10. 单张图片生成三维点云