IOS开发之路-Objective-C 集合下(实战)


那天看oc读取文本文件的方法了,于是想把歌词文件读取进来.然后在进行处理导出.

对歌词文件进行处理,导出纯歌词到txt文件中.

注意以下文章

(技术含量不高)

如果心里产生某种反应请马上就医.

先上效果吧!

之前下好的歌词文件(附桌面美女一张 - -# 哈哈)

打开歌词后:




处理之后生成的文件


打开之后




如果我就想要歌词部分的话呢,那样我得一句一句去复制吗,这样很累呀.

于是我用今天学的集合和之前的字符串完美的解决了这个问题

做到这里有神马用呢,其实做音乐播放器的时候肯定是要进行歌词处理的 ,这样做肯定是有必要的.。


下面附上代码:

文件结构 很简单

一个ReadFile.h和一个ReadFile.m

main文件

//
//  main.m
//  ReadFile
//
//  Created by X's on 13-8-2.
//  Copyright (c) 2013年 X‘s. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "ReadFile.h"

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

    @autoreleasepool {
        ReadFile  *readFile =  [[ReadFile alloc]init];
        //NSLog(@"%@",[readFile read]);  //输出读取文件的内容
        NSMutableArray *rightArray =[NSMutableArray arrayWithArray:[readFile rightArray]];
        [readFile writeFile:rightArray];   //导出到本地文件
        
        //遍历完成的文件
        for (id obj in rightArray)
        {
            NSLog(@"%@",obj);
        }
          [readFile release];
    }
    return 0;
}

ReadFile.h

//
//  ReadFile.h
//  ReadFile
//
//  Created by X's on 13-8-2.
//  Copyright (c) 2013年 X‘s. All rights reserved.
//

#import <Foundation/Foundation.h>


@interface ReadFile : NSObject
{
    //NSString *fileTxt;
    long int count ;
}


@property (nonatomic,copy)NSString *fileTxt;

-(void)setCount:(NSArray *)array;
-(long int )count;
-(NSString *)read;
-(NSArray *)comArray;
- (NSMutableArray *)rightArray;
-(void)writeFile:(NSMutableArray *)arr;
@end

ReadFile.m

//
//  ReadFile.m
//  ReadFile
//
//  Created by X's on 13-8-2.
//  Copyright (c) 2013年 X‘s. All rights reserved.
//

#import "ReadFile.h"

@implementation ReadFile

@synthesize fileTxt = _fileTxt;


-(void)setCount:(NSArray *)array
{
    count = [array count];
}
-(long int)count
{
    return count;
}

-(void)setFileTxt:(NSString *)fileTxt
{
    _fileTxt = [self read];
}
-(NSString *)fileTxt
{
    return  _fileTxt;
}


-(NSString*)read
{
    NSString *path = @"/Users/ibokan/Desktop/快门慢舞.lrc";
    NSError *error;
    NSMutableString *string = [NSMutableString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
    if ( error == 0 )
    {
        //NSLog(@"读取成功%@",string);
    }
    else
    {
//       NSString *str  =   [NSString stringWithFormat:@"读取失败 出错原因:%@",error];
//        return  str;
    }
    return  string;
}

-(NSArray *)comArray
{
    NSString *strFile = [self read];
    NSArray *array =  [strFile componentsSeparatedByString:@"\n"]; //对字符串进行截断存进数组
    return array;
}
-(NSMutableArray *)rightArray
{
//    NSArray *arrayFile =  [readFile comArray];
//    [readFile setCount:arrayFile];
    NSArray *arrayFile =  [self comArray];
    [self setCount:arrayFile];
    int Count = (int)self.count;
    NSMutableArray *rightArray = [NSMutableArray arrayWithCapacity:40];
    for (int i = 0; i<Count; i++)
    {
        if ( [[arrayFile objectAtIndex:i] length] >= 10  )
        {
            NSRange range =  [ [arrayFile objectAtIndex:i] rangeOfString:@"]"];
            NSMutableString *str = [NSMutableString  stringWithString:    [[arrayFile objectAtIndex:i] substringFromIndex:range.location +1] ];
            [rightArray addObject:str];
        }
    }
    return rightArray;
}
-(void)writeFile:(NSMutableArray *)arr
{
    NSString * writePath = @"/Users/ibokan/Desktop/快门慢舞-完美提出版.txt";
    NSMutableString *writeStr = [NSMutableString stringWithCapacity:40];
    int arrCount = (int)[arr count];
    NSError *error;
    for (int i = 0;i<arrCount; i++)
    {
        if ([[arr objectAtIndex:i] length] > 1) {
             [writeStr appendFormat:@"%@\n",[arr objectAtIndex:i]  ];
        }
        else
        {
            [writeStr appendFormat:@"%@",[arr objectAtIndex:i]  ];
        }
    }
    BOOL b = [writeStr writeToFile:writePath atomically:NO encoding:NSUTF8StringEncoding error:&error];
    if( b == NO)
    {
    NSLog(@"导出错误:%@ ",error);
    }
}

@end

OK写完收工!!!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值