OC - 读歌词
类的头文件:
#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 - 读歌词的更多相关文章
- 10行代码解析krc歌词文件
互联网上,我们常见的歌词格式有 LRC.TRC(天天动听歌词).KRC(KuGou ResourCe,酷狗资源文件)和 QRC(QQ音乐歌词):在影视制作中,人们通常会用其他的卡拉 OK 字幕格式,例 ...
- 读Effective Objective-C [提高OC代码质量总结笔记第一篇:熟悉OC]
一.OC特性 OC 为 C 语言添加了面向对象特性,是其超集; OC 使用动态绑定的消息结构,也就是,在运行时才会检查对象类型; 接收一条消息后,究竟应执行何种代码,由运行期环境来决定,而非 编译器; ...
- iOS代码规范(OC和Swift)
下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...
- Objective-C歌词解析
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { FILE* fp1;//定义文件指针 ...
- OC 类簇与复合
OC 类簇与复合 类簇: 类簇是Foundation框架中广泛使用的设计模式.类簇将一些私有的.具体的子类组合在一个公共的.抽象的超类下面,以这种方法来组织类可以简化一个面向对象框架的公开架构,而又不 ...
- OC NSFileHandle(文件内容操作)
OC NSFileHandle(文件内容操作) 初始化 [NSFileHandle fileHandleForUpdatingAtPath:@"data.txt"]; //file ...
- iOS开发 - OC - 实现本地数据存储的几种方式一
iOS常用的存储方式介绍 在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用 ...
- IOS学习之路--OC的基础知识
1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...
- OC字符串NSString
========================== 面向对象编程进阶和字符串 ========================== Δ一.类的设计模式—单例 [单例]程序允许过程中,有且仅有一块内存 ...
随机推荐
- CSS 布局经典问题初步整理
CSS 定位问题 主要就是经典的绝对定位,相对定位问题. 10个文档学布局:通过十个例子讲解布局,主要涉及相对布局,绝对布局,浮动. 百度前端学院笔记 – 理解绝对定位:文章本身一般,几篇参考文献比较 ...
- PAT Basic 1018
1018 锤子剪刀布 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输 ...
- 设置 mysql事物隔离级别
SET [GLOBAL | SESSION] TRANSACTION transaction_property [, transaction_property] ... transaction_pro ...
- 学习笔记4——WordPress插件介绍
1.什么是WordPress插件? WordPress有三大组件:核心.主题.插件. 插件是扩展了WordPress核心功能的代码包.WordPress插件由PHP代码和其他资源(如图像,CSS和JS ...
- WordPress实现前台登录功能
一.添加登录表单 1.首先在当前主题的目录下新建一个php文件,命名为page-login.php,然后将page.php中的所有代码复制到page-login.php中: 2.删除page-logi ...
- TOJ3039: 材质贴图
3039: 材质贴图 Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByteTotal Submit: 46 ...
- SPOJ QTREE Query on a tree ——树链剖分 线段树
[题目分析] 垃圾vjudge又挂了. 树链剖分裸题. 垃圾spoj,交了好几次,基本没改动却过了. [代码](自带常数,是别人的2倍左右) #include <cstdio> #incl ...
- [BZOJ4994] [Usaco2017 Feb]Why Did the Cow Cross the Road III(树状数组)
传送门 1.每个数的左右位置预处理出来,按照左端点排序,因为左端点是从小到大的,我们只需要知道每条线段包含了多少个前面线段的右端点即可,可以用树状数组 2.如果 ai < bj < bi, ...
- USACO 2.1 The Castle
题目大意:给你一个城堡让你求有多少房间,最大房间有多大,敲掉一堵墙后最大的房间有多大,敲掉那座墙 思路:比较恶心的bfs题,反正就是bfs使劲敲 /*{ ID:a4298442 PROB:castle ...
- php那些坑
1.创建数组不是new array(),是$aaa=array(),没有new,数组可以传入键值$aaa=array("key"=>"value"); 2 ...