类的头文件:

#import
<Foundation/Foundation.h>

//FILE_PATH是文件名称。

#define FILE_PATH @"/Users/qianfeng/Desktop/FilePath/等妹有钱了.txt"

@interface QFLrcItem :
NSObject

{

NSString *_time;

NSString *_lrc;

}

-(void)printTime;

-(void)printLrc;

-(void)setTime:(NSString *)newTime;

-(void)setLrc:(NSString *)newLrc;

-(NSString *)getLrc;

-(NSString *)getTime;

-(id)initWithsetsize;

-(void)test;

-(NSString *)getFile;

-(float)getwithTime:(NSString*)timestr;

@end


类的实现.m文件

#import
"QFLrcItem.h"

@implementation QFLrcItem

-(void)printTime{NSLog(@"time:%@",_time);}

-(void)printLrc{NSLog(@"Lrc:%@",_lrc);}

-(id)initWithsetsize{

_lrc = [NSString
alloc];

_time = [NSString
alloc];

return self;

}

-(void)test{

NSString *str = [NSString
stringWithContentsOfFile:FILE_PATH
encoding:NSUTF8StringEncoding
error:nil];

NSLog(@"歌词是:\n %@",str);

}

-(NSString *)getLrc{return
_lrc;}

-(NSString *)getTime{return
_time;}

-(NSString *)getFile{

NSString *lrc = [NSString
stringWithContentsOfFile:FILE_PATH
encoding:NSUTF8StringEncoding
error:nil];

return lrc;

}

-(void)setTime:(NSString *)newTime{_time = newTime;}

-(void)setLrc:(NSString *)newLrc{_lrc = newLrc;}

-(float)getwithTime:(NSString*)timestr{

float time;

float mit,sed,hao;

NSString *flag = @"";

//提取时间单位:分钟

flag = [timestr
substringWithRange,
)];

mit = [flag
floatValue];

//提取时间单位:秒

flag = [timestr
substringWithRange,
)];

sed = [flag
floatValue];

//提取时间单位:毫秒

flag = [timestr
substringWithRange,
)];

hao = [flag
floatValue];

//歌词出现的时间点:time

time = (mit*+sed+hao/);

NSLog(@"mit =  %f",mit);

NSLog(@"sed =  %f",sed);

NSLog(@"hao =  %f",hao);

NSLog(@"sum = %f",time);

return time;

}

@end

main文件:

#import
<Foundation/Foundation.h>

#import
"QFLrcItem.h"

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

{

@autoreleasepool {

NSArray *time_lrc = [NSArray arrayWithObject:@""];

QFLrcItem *item = [[QFLrcItem
alloc] init];

NSString *FileStr = [item getFile];

//歌词初步装入数组中:

NSArray *array = [FileStr componentsSeparatedByString:@"\n"];

int count = ;

for (id obj
in array) {

//跳过前四行,留着后面单独处理。

if (count<) {

}

else{

QFLrcItem *newitem = [[QFLrcItem
alloc] init];

NSString *flag = obj;

[newitem
setTime:[flag ]];

[newitem
setLrc:[flag ]];

time_lrc =  [time_lrc
arrayByAddingObject:newitem];

}

count++;

}

//单独处理前面四行。(由于前面四行没有时间)

NSString * str1 =
@"等妹有了钱\n王振州\n  等我有了钱  \n 王振州 \n";

NSLog(@"%@",str1);

float passtime = ;

float nowtime = 4.5;

count = ;

for (id obj
in time_lrc) {

if (count==) {

count++;

continue;

}

nowtime = [obj getwithTime:[obj getTime]];

//暂停时间:

float stoptime = nowtime - passtime;

NSLog(@"stoptime = %f
秒",stoptime);

[obj printTime];

sleep(stoptime);

[obj printLrc];

passtime = nowtime;

}

}

return
;

}

歌词文件:格式txt

[ti:等妹有了钱] 

[ar:王振州] [al:等我有了钱] 

[ar:王振州] 





[00:04.50]等妹有了钱 

[00:07.17]歌词编写:王振州 

[00:11.05]QQ:1259039029 

[00:13.17] 

[01:32.97]他们都说妹非常傻 妹下班就回家 

[01:36.19]事实上妹是月光族 挣钱不够花 

[01:40.26]早出晚归忙工作 不敢去酒吧 

[01:43.58]帅哥都会嫌弃妹 不接妹电话 

[01:47.26] 

[01:47.69]妹年纪越来越大了 还是没人嫁 

[01:50.99]二十好几没老公 急坏了爸妈 

[01:54.60]日子天天在挣扎 没什么变化 

[01:58.35]活着究竟为什么 越想越害怕 

[02:02.05] 

[02:02.51]等妹有了钱 妹想花妹就花 

[02:06.13]抽烟抽中华 吃饭妹点大虾 

[02:09.88]等妹有了钱 妹什么都不怕 

[02:13.56]开车开宝马 购物妹上燕莎 

[02:17.02] 

[02:17.32]等妹有了钱 妹天天去潇洒 

[02:20.92]早上喝早茶 晚上妹泡酒吧 

[02:24.61]等妹有了钱 帅哥就一大把 

[02:28.34]谁不喜欢妹 妹一定踹了她 

[02:31.97] 

[03:02.11]他们都说妹非常傻 妹下班就回家 

[03:04.88]事实上妹是月光族 挣钱不够花 

[03:09.01]早出晚归忙工作 不敢去酒吧 

[03:12.64]帅哥都会嫌弃妹 不接妹电话 

[03:15.90] 

[03:16.29]妹年纪越来越大了 还是没人嫁 

[03:20.01]二十好几没老公 急坏了爸妈 

[03:23.91]日子天天在挣扎 没什么变化 

[03:27.47]活着究竟为什么 越想越害怕 

[03:30.84] 

[03:31.21]等妹有了钱 妹想花妹就花 

[03:34.69]抽烟抽中华 吃饭妹点大虾 

[03:38.33]等妹有了钱 妹什么都不怕 

[03:42.09]开车开宝马 购物妹上燕莎 

[03:45.65] 

[03:45.98]等妹有了钱 妹天天去潇洒 

[03:49.59]早上喝早茶 晚上妹泡酒吧 

[03:53.36]等妹有了钱 帅哥就一大把 

[03:56.90]谁不喜欢妹 妹一定踹了她 

[04:00.23]歌词编写:王振州QQ:1259039029 

[05:30.34]

OC - 读歌词的更多相关文章

  1. 10行代码解析krc歌词文件

    互联网上,我们常见的歌词格式有 LRC.TRC(天天动听歌词).KRC(KuGou ResourCe,酷狗资源文件)和 QRC(QQ音乐歌词):在影视制作中,人们通常会用其他的卡拉 OK 字幕格式,例 ...

  2. 读Effective Objective-C [提高OC代码质量总结笔记第一篇:熟悉OC]

    一.OC特性 OC 为 C 语言添加了面向对象特性,是其超集; OC 使用动态绑定的消息结构,也就是,在运行时才会检查对象类型; 接收一条消息后,究竟应执行何种代码,由运行期环境来决定,而非 编译器; ...

  3. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  4. Objective-C歌词解析

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { FILE* fp1;//定义文件指针 ...

  5. OC 类簇与复合

    OC 类簇与复合 类簇: 类簇是Foundation框架中广泛使用的设计模式.类簇将一些私有的.具体的子类组合在一个公共的.抽象的超类下面,以这种方法来组织类可以简化一个面向对象框架的公开架构,而又不 ...

  6. OC NSFileHandle(文件内容操作)

    OC NSFileHandle(文件内容操作) 初始化 [NSFileHandle fileHandleForUpdatingAtPath:@"data.txt"]; //file ...

  7. iOS开发 - OC - 实现本地数据存储的几种方式一

    iOS常用的存储方式介绍 在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用 ...

  8. IOS学习之路--OC的基础知识

    1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...

  9. OC字符串NSString

    ========================== 面向对象编程进阶和字符串 ========================== Δ一.类的设计模式—单例 [单例]程序允许过程中,有且仅有一块内存 ...

随机推荐

  1. vue组件从开发到发布

    组件化是前端开发非常重要的一部分,从业务中解耦出来,可以提高项目的代码复用率.更重要的是我们还可以打包发布,俗话说集体的力量是伟大的,正因为有许许多多的开源贡献者,才有了现在的世界. 不想造轮子的工程 ...

  2. python--MySQL多表查询

    一 介绍 我们在写项目的时候一般都会建一个数据库,数据库里面会存很多的表,不可能把所有的数据都放在一张表里,因为分表来存数据节省空间,数据的组织结构更清晰,解耦和程度更高,但是这些表本质上还不是一个整 ...

  3. pyhton链式赋值在可变类型/不可变类型上的区别以及其本质

    关于链式赋值的一些注意点: a=[]b=[]x=y=[]print(a==b) #Trueprint(x==y) #Trueprint(a is b) #Falseprint(x is y) #Tru ...

  4. Day13有参装饰器,三元表达式,匿名函数

    多个装饰器: 加载顺序:由下而上 执行顺序:由上而下 有参装饰器: 闭包,给函数传参的一种方法 当装饰器内需要参数时,可以采用闭包形式给其传参,第三层函数接收完参数时,就变为无参装饰器 三元表达式: ...

  5. (转)Duplicate Symbol链接错的原因总结和解决方法

    duplicate symbol是一种常见的链接错误,不像编译错误那样可以直接定位到问题的所在.但是经过一段时间的总结,发现这种错误总是有一些规律可以找的.例如,我们有如下的最简单的两个类代码: // ...

  6. VisionPro工业视觉的标定方法

    工业视觉常用的几种标定方式. 计算像素比 有些时候我们需要的检测数据并不需要特别准确,并且手边没有其它标定工具,可以使用这种方法大概算一算每个像素对应多大距离. 找一个知道距离的物体,测出它的像素距离 ...

  7. css 元素垂直居中

    通用 <div id="parent"> <div id="child">Content here</div> </d ...

  8. rabbitmq php扩展amqp安装

    configure: error: Please reinstall the librabbitmq distribution itself or (re)install librabbitmq de ...

  9. 【Luogu】P3052摩天大楼里的奶牛(遗传算法乱搞)

    一道状压题,但今天闲来无事又用遗传乱搞了一下. 设了一个DNA数组,DNA[i]记录第i个物品放在哪个组里.适应度是n-这个生物的组数+1. 交配选用的是轮盘赌和单亲繁殖——0.3的几率单点变异.(事 ...

  10. BZOJ 2300 [HAOI2011]防线修建 ——计算几何

    只需要倒着插入,然后维护一个凸包就可以了. 可以用来学习set的用法 #include <map> #include <set> #include <cmath> ...