ios歌词解析

  好不容易吧歌词解出来了,分享给大家。

  首先我定义了一个方法,把歌词的名字传进去,返回一个字典,key是以“:”分割的时间戳,值是当前行的歌词。


 1 -(NSMutableDictionary*)musicLrc:(NSString*)musicName
2 {
3
4 // 初始化一个字典
5 NSMutableDictionary *musicLrcDictionary=[[NSMutableDictionary alloc]initWithCapacity:20];
6 // 加载歌词到内存
7 NSString *strMusicUrl=[[NSBundle mainBundle]pathForResource:musicName ofType:@"lrc"];
8 NSString *strLrcKu=[NSString stringWithContentsOfFile:strMusicUrl encoding:NSUTF8StringEncoding error:nil];
9 // 把文件安行分割,以每行为单位放入数组
10 NSArray *strlineArray=[strLrcKu componentsSeparatedByString:@"\n"];
11 // 安行读取歌词歌词
12 for (int i=0; i<[strlineArray count]; i++) {
13 // 将时间和歌词分割
14 NSArray *lineComponents=[[strlineArray objectAtIndex:i] componentsSeparatedByString:@"]"];
15 // 取出每行的时间 注意有些歌词是重复使用的,所以会有多个时间点
16 for (int n=0; n<[lineComponents count]; n++) {
17 NSString *strKuTimer = lineComponents[n];
18 if ([strKuTimer length]==9) {
19 // 取出“:”和“.”符号来对比,是否是我们所需要的时间
20 NSString *str1=[strKuTimer substringWithRange:NSMakeRange(3, 1)];
21 NSString *str2=[strKuTimer substringWithRange:NSMakeRange(6, 1)];
22 if ([str1 isEqualToString:@":"]&&[str2 isEqualToString:@"."]) {
23 // 将时间和歌词暂时放在两个字符串里
24 NSString *lineTimer=[[lineComponents objectAtIndex:n] substringWithRange:NSMakeRange(1, 5)];
25 NSString *lineStr=[lineComponents objectAtIndex:([lineComponents count]-1)];
26 // 以时间为key,歌词为值,放入字典中
27 [musicLrcDictionary setObject:lineStr forKey:lineTimer];
28 }
29 }
30 }
31 }
32 // 在这里返回整个字典
33 return musicLrcDictionary;
34
35 }

  完整的代码在我的github上有托管地址是:https://github.com/qisedao0215/audioPlay

  

时间: 2024-10-12 21:43:46

ios歌词解析的相关文章

iOS xml解析

iOS xml 解析方法有两种:SAX , DOM. SAX 不用借助第三方,在解析过程中逐行解析.(NSXMLParser,需要实现代理),具体步骤: 1.获取文件路径. 2.创建 NSXMLParser 对象. 3.遵守协议,设置代理. 4.实现代理方法 1>- (void)parserDidStartDocument:  ---- 开始解析 2>- (void)parserDidEndDocument: ----解析结束 3>- (void)parser:didStartEleme

浅谈动感歌词-歌词解析篇

1引言 要解析动感歌词文件,首先就要清楚动感歌词的文件内容,当然歌词的文件内容,我们已经在分析篇的文章里面介绍过了,这里将不再做详细的介绍,当我们可以把歌词成功解析出来后,再结合歌词生成篇,一个简单的歌词格式转换工具也就出来了. 2歌词解析 歌词解析,其实就是把文件里面的标签内容.歌词时间和歌词内容解析出来,当然,为了后期拓展其它的动感歌词格式,我们这里要好好设计一番. 2.1实体类 2.1.1歌词读取器 主要用来约束动感歌词读取器要实现的方法,可用于拓展实现其它的动感歌词格式. 2.1.2歌词

iOS 基础类解析 - NSObject

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. NSObject Class Reference Inherits from none (NSObject is a root class) Co

iOS 基础类解析 - NSDate

NSDate Class Reference Inherits from NSObject Conforms to NSCopying NSSecureCoding NSObject (NSObject) Framework /System/Library/Frameworks/Foundation.framework Availability Available in iOS 2.0 and later. Declared in NSDate.h Companion guides Date a

IOS 原生解析JSON 问题

服务器----WebService 返回的是JSON数据 IOS解析报错: Error Domain=NSCocoaErrorDomain Code=3840 "Unable to convert data to string around character 56." UserInfo={NSDebugDescription=Unable to convert data to string around character 56.} Code = 3840 错误 通过我将JSON写成

iOS 基础类解析 - NSNumber

NSNumber Class Reference Inherits from NSValue : NSObject Conforms to NSCopying (NSValue) NSSecureCoding (NSValue) NSObject (NSObject) Framework /System/Library/Frameworks/Foundation.framework Availability Available in iOS 2.0 and later. Declared in

iOS 基础类解析 - NSData

NSData Class Reference Inherits from NSObject Conforms to NSCopying NSMutableCopying NSSecureCoding NSObject (NSObject) Framework /System/Library/Frameworks/Foundation.framework Availability Available in iOS 2.0 and later. Declared in NSData.h Compan

iOS 基础类解析 - NSString

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 以下从苹果官网摘录的 NSString 的目录信息,大家发现了,条目太多,不过看一下分类,一共24个,好像少很多了吧,就是这样,理解了每一个分类所

iOS中解析 XML / JSON

JSON数据格式 1. 概述: JSON (JavaScript Object Notation) 是?一种轻量级的数据交换格式 基于?文本格式,易于?人阅读和编写,同时也易于机器解析和?生成. 2. JSON 数据的书写格式是:名称/值 • 名称写在前?面(在双引号中) • 值对写在后?面 • 中间?用冒号隔开 3. JSON 值?支持类型 数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true 或 false) 数组(在中括号中) 对象(在花括号中) null JSON格式?一:最外层